59-2队列的最大值 Posted on 2020-05-04 Words count in article: 284 | Reading time ≈ 1 59-2队列的最大值下面是题目 下面是题目给出的代码12345678910111213141516171819class MaxQueue {private: queue<int>public: MaxQueue() { } int max_value() { } void push_back(int value) { } int pop_front() { }}; 最简单的暴力搜索12345678910111213141516171819202122232425class MaxQueue { //用数组模拟队列 int q[20000]; int begin = 0, end = 0;public: MaxQueue() { } int max_value() { int ans = -1; for (int i = begin; i != end; ++i) ans = max(ans, q[i]); return ans; } void push_back(int value) { q[end++] = value; } int pop_front() { if (begin == end) return -1; return q[begin++]; }}; 与155 最小栈不同,我们如果要维护一个最大队列,很难用pair实现1234567891011121314151617181920212223242526272829303132class MaxQueue {public: MaxQueue() { } int max_value() { return que.empty()?-1:dq.front(); } void push_back(int value) { que.push(value);//更新deque双端队列,把比value小的全部pop,就是在queue队列中的第一大,第二大。。。 while(!dq.empty()&&dq.back()<value) dq.pop_back(); dq.push_back(value); } int pop_front() { if(que.empty()) return -1; int t=que.front(); que.pop();//出队列的时候要判断一下是不是把当前的最大值给pop掉了,如果是,那么更新deque if(t==dq.front()) dq.pop_front(); return t; }private: queue<int> que; deque<int> dq;}; -------------本文结束,感谢您的阅读------------- Post author: Jason Post link: https://jasonxqh.github.io/2020/05/04/59-2%E9%98%9F%E5%88%97%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC/ Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.