栈与队列篇
文章平均质量分 66
栈与队列算法题
小唐要努力
这个作者很懒,什么都没留下…
展开
-
栈与队列算法题(7)前K个高频元素
前K个高频元素描述给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2输入: nums = [1], k = 1输出: [1]提示 k 的取值范围是 [1, 数组中不相同的元素的个数] 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的进阶:你所设计算法的时间复杂度 必须...原创 2021-10-28 15:20:11 · 102 阅读 · 0 评论 -
栈与队列算法题(6)滑动窗口的最大值
目录滑动窗口的最大值描述示例 1示例 2示例 3示例 4示例 5提示方法:单调队列滑动窗口的最大值描述给你一个整数数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 ...原创 2021-10-28 12:37:12 · 95 阅读 · 0 评论 -
栈与队列算法题(5)逆波兰表达式求值
目录逆波兰表达式求值描述说明示例1示例2示例3提示逆波兰表达式方法:堆栈方法二:数组模拟栈逆波兰表达式求值描述根据 逆波兰表示法,求表达式的值。有效的算符包括+、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1输入:tokens = ["2","1","+","3","*"]...原创 2021-10-28 10:21:33 · 405 阅读 · 0 评论 -
栈与队列算法题(4)删除字符串中的所有相邻重复项
目录删除字符串中的所有相邻重复项描述示例提示方法一:堆栈方法二:指针删除字符串中的所有相邻重复项描述给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例输入:"abbaca"输出:"ca"例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作..原创 2021-10-28 09:27:31 · 200 阅读 · 0 评论 -
栈与队列算法题(3)有效的括号
目录有效的括号描述示例 1示例2示例3示例4示例5提示方法:堆栈有效的括号描述给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1输入:s = "()"输出:true示例2输入:s = "()[]{}"输出:true示例3输入:s = "(]"输出:fal...原创 2021-10-27 22:16:53 · 70 阅读 · 0 评论 -
栈与队列算法题(2)用队列实现栈
用队列实现栈描述请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意你只能使用队列的基本操作 —— 也就是push to back、peek/pop ...原创 2021-10-27 19:52:53 · 97 阅读 · 0 评论 -
栈与队列算法题(1)用栈实现队列
目录用栈实现队列描述说明进阶示例提示方法:双栈用栈实现队列描述请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empty() 如果队列为空,返回 true ;否则,返回 false说明你只能原创 2021-10-27 10:11:14 · 139 阅读 · 0 评论