美文网首页
剑指 Offer 第59-2题:队列的最大值

剑指 Offer 第59-2题:队列的最大值

作者: 放开那个BUG | 来源:发表于2022-08-15 23:16 被阅读0次

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;
    }
}

相关文章

网友评论

      本文标题:剑指 Offer 第59-2题:队列的最大值

      本文链接:https://www.haomeiwen.com/subject/jxobbrtx.html