- 使用栈模拟队列操作
- 题目链接: https://leetcode.com/problems/implement-queue-using-stacks/
- 解题思路
使用两个栈一个用来做输入,一个用来做输出
- 使用队列模拟栈操作
- 题目链接
https://leetcode.com/problems/implement-stack-using-queues/ - 解题思路
同样也是使用两个队列模拟,不同点在于第一个队列要空的最后一个元素作为出栈元素
- 题目链接
- 寻找第k大元素
高频面试题,求解数组中第k大的元素- 题目链接
https://leetcode.com/problems/kth-largest-element-in-a-stream/ - 解题思路
维护一个小顶堆,即从小到大的优先队列,先填满,然后遇到比堆顶元素大的放入堆中,并把堆顶元素挤出反之则忽略。
代码见github
- 题目链接
- 滑动窗口中求解最大值
- 给定一个数组,与一个k值,求解k个大的区间内的最大值
https://leetcode.com/problems/sliding-window-maximum/ - 解题思路
可以使用大小为k的优先队列,这是思路1
还有一种方法是使用双端队列,每次入队的时候比较下之前的元素,如果都比前面的大,那把比之大的都出队,然后将其入队,这样可以做到,每次队首元素都是最大值。这里要注意的是双端队列中需要保存给定数组的索引,来保证队首元素的区间在k滑动窗口内,具体代码见github
- 给定一个数组,与一个k值,求解k个大的区间内的最大值
队列与栈相关题目
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 题量有点多,建议Ctrl + F题号或题目哦~ 二叉树的遍历(前序遍历,中序遍历,后序遍历)[144] Binar...
- 链表删除[203] Remove Linked List Elements[19] Remove Nth Node...