![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
栈队堆
算法题
菜鸡的鼻祖
这个作者很懒,什么都没留下…
展开
-
剑指Offer(第2版)——面试题59:滑动窗口的最大值
题目1给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}。解题思路可以使用一个两端开口的队列(用STL中的deque来实现),用来保存有可能是滑动窗口最大值的数字的下标。接下来我们以数组{2,3,4,2,6,2,5,1}为例,来细说整体思...原创 2020-02-04 18:34:30 · 213 阅读 · 0 评论 -
剑指Offer(第2版)——面试题9:用两个栈实现队列
题目:用两个栈实现一个队列。拓展题目:用两个队列实现一个栈。原创 2019-06-23 10:38:33 · 133 阅读 · 0 评论 -
剑指Offer(第2版)——面试题41:数据流中的中位数
题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。解题思路:这道题的解法有很多,本文使用最大堆和最小堆实现。 我们将数据分为两部分,用一个最大堆实现左边的数据容器,用一个最小堆实现右边的数据容器。左边最大堆的数据都比右边最小堆的数据要小,左、右两边内...原创 2019-12-04 11:24:05 · 107 阅读 · 0 评论 -
剑指Offer(第2版)——面试题40:最小的k个数
题目输入n个整数,找出其中最小的k个数。例如,输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。解题思路:思路1:快速排序最简单的方法就是把输入的n个整数排序,排序之后位于最前面的k个数就是最小的k个数,时间复杂度为O(nlogn)。思路2:Partiton分割:基于数组的第k个数字来调整,则使得比第k个数字小的所有数字都位于数组的左边,比第k个数字大的所...原创 2019-12-03 13:48:59 · 114 阅读 · 0 评论 -
剑指Offer(第2版)——面试题31:栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列{1,2,3,4,5}是某栈的压入序列,序列{4,5,3,2,1}是该压栈序列对应的一个弹出序列,但{4,3,5,1,2}就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)...原创 2019-09-01 20:11:35 · 109 阅读 · 0 评论 -
剑指Offer(第2版)——面试题30:包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1)。1.解题思路:可以使用两个栈,一个为数据栈,另一个为辅助栈,数据栈用于存储所有数据,辅助栈用于存储最小值。数据栈和辅助栈同时更新,数据栈每压入一个新元素,辅助栈就压入此时数据栈最小的元素,这样可以保证辅助栈的栈顶一直是数据栈的最小元素。2.代码:...原创 2019-08-31 22:22:45 · 96 阅读 · 0 评论