面试题59 - II. 队列的最大值
生活随笔
收集整理的這篇文章主要介紹了
面试题59 - II. 队列的最大值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2020-05-15
1.題目描述
隊列的最大值2.題解
這個題目有點像滑動窗口求最大值以及棧的最大值的結合體,我們可以模仿滑動窗口求最大值,開辟一個 雙端隊列來求解最大值。3.代碼
class MaxQueue { public:MaxQueue() {}int max_value() {if (!myque.empty()) return mydeque.front();return -1;}void push_back(int value) {while (!mydeque.empty()&&mydeque.back()<=value){ // 如果當前雙端隊列中的元素小于x當前值,則出隊列mydeque.pop_back();}myque.push(value); // 入隊列mydeque.push_back(value); // 入雙端隊列}int pop_front() {if (myque.empty()) return -1;if (mydeque.front()==myque.front()) mydeque.pop_front();int res=myque.front();myque.pop();return res; // 出隊列}deque<int> mydeque;queue<int> myque; };/*** Your MaxQueue object will be instantiated and called as such:* MaxQueue* obj = new MaxQueue();* int param_1 = obj->max_value();* obj->push_back(value);* int param_3 = obj->pop_front();*/總結
以上是生活随笔為你收集整理的面试题59 - II. 队列的最大值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习代码注解(一)—— mnistd
- 下一篇: 转账示例(二):service层面实现(