Leetcode:剑指 Offer 59 - II. 队列的最大值
双端队列queue为主队列,存放全部元素,help用于存放主队列的最大值。
1.入队:
queue:把元素value直接插入queue后即可。
help:把help后面的小于value用help.pollLast()删除,再把value用help.addLast()加入。
2.出队:
queue:用queue.pollFirst()把元素出队。
help:如果pollFirst()的元素等于help的左端头元素的值,用help.pollFirst()把元素出队。
class MaxQueue {
LinkedList<Integer> queue;
LinkedList<Integer> help;
public MaxQueue() {
queue = new LinkedList<Integer>();
help = new LinkedList<Integer>();
}
public int max_value() {
if(help.isEmpty()) return -1;
return help.peekFirst();
}
public void push_back(int value) {
queue.addLast(value);
while(!help.isEmpty() && value > help.peekLast()){
help.pollLast();
}
help.addLast(value);
}
public int pop_front() {
if(queue.isEmpty()) return -1;
int value = queue.pollFirst();
if(value == help.peekFirst()){
help.pollFirst();
}
return value;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。