1、前言
题目描述
2、思路
这道题其实就是上道题,但是唯一要注意的是有一个 pop_front 函数要求返还队列的插入顺序,那么在定义原来的队列时再加一个队列保存插入的顺序即可。
3、代码
class MaxQueue {
private Deque<Integer> queue = new LinkedList<>();
private Deque<Integer> queue2 = new LinkedList<>();
public MaxQueue() {
}
public int max_value() {
return queue.isEmpty() ? -1 : queue.peekFirst();
}
public void push_back(int value) {
while(!queue.isEmpty() && queue.peekLast() < value){
queue.pollLast();
}
queue.addLast(value);
queue2.addLast(value);
}
public int pop_front() {
if(queue2.isEmpty()){
return -1;
}
int value = queue2.pollFirst();
if(value == queue.peekFirst()){
queue.pollFirst();
}
return value;
}
}












网友评论