题目链接:https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/
题目如下:
class MaxQueue {
public:
MaxQueue() {
}
int max_value() {
if(max_que.size()==0) return -1;
else return max_que.front();
}
void push_back(int value) {
//第一步:保证单调队列 队头大元素,默认队头为最大元素,每次都从队尾追加,且每次都次队尾删除
while(max_que.size()!=0&&max_que.back()<value) max_que.pop_back();
max_que.push_back(value);
//第二步:正常队列里放元素
que.push(value);
}
int pop_front() {
if(que.size()==0) return -1;
int res=que.front();
if(res==max_que.front()) max_que.pop_front();
que.pop();
return res;
}
private:
queue<int> que;//一头进,另一头出
deque<int> max_que;//双端队列
};
/**
* 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();
*/