
队列
队列相关题目
ZQQ~BK
这个作者很懒,什么都没留下…
展开
-
数据流中的中位数
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路分析:使用小顶堆存大数据,使用大顶堆存小数据。这样堆顶一取出就是中位数了。奇数时刻大顶堆存值,所...原创 2020-03-18 09:08:44 · 75 阅读 · 0 评论 -
II. 队列的最大值
题目描述:请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1思路分析:用双端队列存储队列里元素的最大值入队时,如果入队的值大于双端队列队尾的值,则一直出队,最后将值入队出队时,如果队列出队值和双端队...原创 2020-03-07 22:58:55 · 144 阅读 · 0 评论 -
用队列实现栈
题目:使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空方法一: 用两个队列q1和q2实现栈,q1用来入栈,q2用来出栈,定义一个top用来标记栈顶元素。出栈时,将q1中的n-1个元素出栈,然后从q2入栈,最后将第n个元素出栈,交换两个队列的元素class MyStack { ...原创 2020-01-17 15:42:24 · 110 阅读 · 0 评论 -
设计循环双端队列
题目:设计实现双端队列。你的实现需要支持以下操作:MyCircularDeque(k):构造函数,双端队列的大小为k。insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。insertLast():将一个元素添加到双端队列尾部。如果操作成功返回 true。deleteFront():从双端队列头部删除一个元素。 如果操作成功返回 true。delet...原创 2020-01-14 21:41:03 · 150 阅读 · 0 评论 -
猫狗收容所
题目:有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。给定一个操作序列int[][2] ope(C++中为vector<vector>)代表所有事件。若第一个元素为1,则代表有动物进入收容所,第二个元素为动物的编号,正数代表狗,负数代表猫;若第一...原创 2020-01-13 23:25:37 · 350 阅读 · 0 评论 -
员工的重要性
题目:给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体现在员工1的数据...原创 2020-01-14 20:05:51 · 192 阅读 · 0 评论 -
最近的请求次数
题目:写一个 RecentCounter 类来计算最近的请求。它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。返回从 3000 毫秒前到现在的 ping 数。任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。保证每次对 ping 的调用都使用比之前更大的 t 值。class Recent...原创 2020-01-13 17:27:08 · 107 阅读 · 0 评论