【LeetCode】剑指 Offer 59 - II. 队列的最大值
![在这里插入图片描述](https://img-blog.csdnimg.cn/164543368d9e413799db1d0b9a84b243.png)
package offer;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
public class Solution59_2 {
public static void main(String[] args) {
Solution59_2 solution = new Solution59_2();
solution.push_back(1);
solution.push_back(2);
System.out.println(solution.max_value());
System.out.println(solution.pop_front());
System.out.println(solution.max_value());
}
Queue<Integer> queue;
Deque<Integer> deque;
public Solution59_2(){
queue = new LinkedList<>();
deque = new LinkedList<>();
}
private int max_value(){
return deque.isEmpty() ? -1 : deque.peekFirst();
}
private void push_back(int value){
queue.offer(value);
while(!deque.isEmpty() && deque.peekLast() < value){
deque.pollLast();
}
deque.offerLast(value);
}
private int pop_front(){
if(queue.isEmpty()) return -1;
if(queue.peek().equals(deque.peekFirst())){
deque.pollFirst();
}
return queue.poll();
}
}