栈和队列
LeetCode刷题分类——栈和队列
阿清~
这个作者很懒,什么都没留下…
展开
-
《剑指offer》刷题系列——(五十二)滑动窗口的最大值
题目给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]思路queue是一个双端队列,队列的头部始终每一步的保存最大值;res保存所有滑动窗口的最大值。开始遍历nums数组,一共包含两个过程:当窗口里的数字小于等于k个时,存入一个数字,在存入一个数字之前,首先判断队列尾部的数字是否小于待存入的数字,如果已有的数字小于待存入的数字,那么这些数字已经不可能原创 2020-07-18 10:36:59 · 117 阅读 · 0 评论 -
《剑指offer》刷题系列——(十九)队列的最大值
题目请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1输入:[“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_value”][[],[1],[2],[],[],[]]输出: [null,null,null,2,1,2]思路借助一原创 2020-07-05 11:52:12 · 130 阅读 · 0 评论 -
《剑指offer》刷题系列——(四十七)栈的压入、弹出
题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。思路利用一个辅助栈。node 保存popped序列中当前要比较的值的索引,初始为0.依次将pushed序列里的元素入栈,每次入栈之后,都要比较栈顶元素与popped[node]是否相等,如果相等就弹出,nod原创 2020-07-15 10:24:29 · 202 阅读 · 0 评论 -
《剑指offer》刷题系列——(十八)包含min函数的栈
题目定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。思路代码class MinStack: def __init__(self): """ initialize your data structure here. """ self.stack1,self.stack2 = [],[] def push(self, x:原创 2020-07-05 09:50:19 · 68 阅读 · 0 评论 -
《剑指offer》刷题系列——(十七)用两个栈实现队列
题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 :输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]思路栈的特点是“先进后出”,队列的特点是“先进先出”。定义两个栈stack1 和 stac原创 2020-07-04 22:05:50 · 56 阅读 · 0 评论