刷题3:队列的最大值
Posted 嗯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题3:队列的最大值相关的知识,希望对你有一定的参考价值。
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;
}
}
以上是关于刷题3:队列的最大值的主要内容,如果未能解决你的问题,请参考以下文章