队列
是
baixiaofei567
如果十年前没种树,那最好的时间是现在
展开
-
225. 用队列实现栈
丝毫没有技术含量的题!!将一个队列弹到只剩一个元素,这个元素就是最后一个进来的,就是栈顶,将它出队就行了,用另一个队列来接收弹出的元素,然后用一个tmp来进行队列1和队列2的交换就行了class MyStack {public: /** Initialize your data structure here. */ MyStack() { } /** Push element x onto stack. */ void push(int x) {..原创 2021-03-26 00:59:41 · 49 阅读 · 0 评论 -
剑指offer——滑动窗口的最大值C++
暴力=easy。deque=hard。由于我们需要求出的是滑动窗口的最大值,如果当前的滑动窗口中有两个下标 ii 和 jj,其中 ii 在 jj 的左侧(i < ji<j),并且 ii 对应的元素不大于 jj 对应的元素(\textit{nums}[i] \leq \textit{nums}[j]nums[i]≤nums[j]),那么会发生什么呢?当滑动窗口向右移动时,只要 ii 还在窗口中,那么 jj 一定也还在窗口中,这是 ii 在 jj 的左侧所保证的。因此,由于 \textit{n.原创 2021-01-07 01:50:34 · 207 阅读 · 0 评论 -
剑指offer——数据流中的中位数C++(堆-优先队列)
vector加sort不香吗,时间复杂度O(nlogn),实际运行比这个更快诶。虽香但滚。因为是中位数,所以把左右分成两块,左边是大顶堆,右边是小顶堆。堆的插入时间复杂度为O(lgn),取值的时间复杂度就是O(1),因为就是取两个堆顶的操作。插入满足两个操作:1.两边的数据量之差不大于1,2.且左边全小于右边。所以我们的插入操作是,当前数据总量是偶数时,将其插入左堆(过程是先插入右,再将右的堆顶插入到左堆),奇数时反向操作。这样子就可以保证左堆>=右堆,且左边一定小于右边。取值时当前为奇数,就去.原创 2021-01-07 01:47:53 · 168 阅读 · 0 评论 -
剑指offer——用两个栈实现队列
这道题的频率的确很高很高。因为栈先进后出,队列先进先出,所以我一开始的想法是在push的时候先检查stack2里面是否还有元素,如果还有全部依次放回stack1,但是这的确是个傻逼操作。更好的方法就是push()直接就是将元素压入stack1,在pop()的时候检查,如果stack2为空,就将stack1的元素全部放入stack2,这样先进来的元素就在上面了。如果stack2不为空,就直接弹出stack2栈顶的元素,因为无论stack1里是否有元素,它都是比stack2里任何一个元素后进来的,肯定是后被.原创 2020-12-23 02:09:06 · 150 阅读 · 0 评论 -
1056 Mice and Rice (25分)
Mice and Rice is the name of a programming contest in which each programmer must write a piece of code to control the movements of a mouse in a given map. The goal of each mouse is to eat as much rice as possible in order to become a FatMouse.First the pl原创 2020-10-25 01:30:55 · 108 阅读 · 0 评论