月份:2020年6月

15 篇文章

有多少小于当前数字的数字
题目 给你一个数组 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…
棒球比赛
题目 你现在是棒球比赛记录员。 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数。 2."+"(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。 3."D"(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。 4."C"(一个操作,这不是一个回合的分数):表示您…
删除字符串中的所有相邻重复项
题目 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯…