分类:刷题

17 篇文章

制作 m 束花所需的最少天数
题目 给你一个整数数组bloomDay,以及两个整数m和k。 现需要制作m束花。制作花束时,需要使用花园中 相邻的k朵花 。 花园中有n朵花,第i朵花会在bloomDay[i]时盛开,恰好可以用于一束花中。 请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回-1。 解题 查找所需最小的天数,那么天数必然在最大天数和最小天…
完成所有工作的最短时间
题目 给你一个整数数组 jobs ,其中jobs[i]是完成第 i 项工作要花费的时间。 请你将这些工作分配给k位工人。所有工作都应该分配给工人,且每项工作只能分配给一位工人。工人的 工作时间 是完成分配给他们的所有工作花费时间的总和。请你设计一套最佳的工作分配方案,使工人的 最大工作时间 得以 最小化 。 返回分配方案中尽可能 最小 的 最大工作…
有多少小于当前数字的数字
题目 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 以数组形式返回答案。 示例 输入:nums = [8,1,2,2,3] 输出:[4,0,1,1,3…
接雨水
题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 思考 建立一个栈,栈为空时,如果数大于0就push,并且保存第一个数,遍历,如果小于第一个数的就push,大于的话就开始pop,循环完成后可能会遇到栈底的数最大,栈不为空,就还需要进行一个循环,反过来计算直到栈为空 代码 import java…
验证栈序列
题目 给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。 示例 输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1] 输出:true 解释:我们可以按以下顺序执行…
二叉树的前、中、后序遍历
代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ //前序 class Solution {…
二叉搜索树迭代器
题目 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 示例 思考 因为是搜索树,左边元素始终比右边元素小,使用中序迭代,把元素从小到大放入队列中。 代码 /** * Definition for a binary tree node. * public class Tre…
最小栈
题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 1.push(x) —— 将元素 x 推入栈中。 2.pop() —— 删除栈顶的元素。 3.top() —— 获取栈顶元素。 4.getMin() —— 检索栈中的最小元素。 示例 输入: ["MinStack","push","push","push"…
有效的括号
题目 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 1.左括号必须用相同类型的右括号闭合。 2.左括号必须以正确的顺序闭合。 示例 输入: "()" 输出: true 思考 模拟栈遇到左括号就压进栈,与取出的括号匹配的就pop,与取出的括号不匹配就返回false,如果栈中的左括号…
滑动窗口的最大值
题目 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1 -3 5…