剑指 Offer 59 - II. 队列的最大值 - 力扣(LeetCode)
参考:如何解决 O(1) 复杂度的 API 设计题 - 队列的最大值 - 力扣(LeetCode)
class MaxQueue {
public:
MaxQueue() {
}
int max_value() {
return d.empty() ? -1 : d.front();
}
void push_back(int value) {
q.push(value);
while(!d.empty() && d.back() < value) d.pop_back();
d.push_back(value);
}
int pop_front() {
if(q.empty()) return -1;
int val = q.front();
q.pop();
if(val == d.front()) d.pop_front();
return val;
}
queue<int> q;
deque<int> d;
};