美文网首页
面试题59_2:队列的最大值

面试题59_2:队列的最大值

作者: 繁星追逐 | 来源:发表于2019-11-22 11:30 被阅读0次

定义一个队列,实现max方法得到队列中的最大值。

  • 要求入列、出列以及邱最大值的方法时间复杂度都是O(1)

private Deque<Integer> dataQueue = new LinkedList<>();
private Deque<Integer> maxQueue = new LinkedList<>();

    /**
     * 另外加一个保存最大值的队列
     * @param number
     */
    public void offer(int number) {
        dataQueue.offer(number);
        // 即将要存入的元素比当前队列最大值还大,存入该元素
        // 即将要存入的元素不超过当前队列最大值,再将最大值存入一次
        if (maxQueue.isEmpty() || number > maxQueue.peekFirst()) maxQueue.offerFirst(number);
        else maxQueue.offerFirst(maxQueue.peekFirst());

    }

    public void poll() {
        //!!!取队列和栈时,一定要最空值判断
       if (dataQueue.isEmpty()) throw new RuntimeException("队列为空!");
       if (maxQueue.peekFirst() == dataQueue.peekFirst()){
           maxQueue.pollFirst();
       }
       dataQueue.pollFirst();

    }

    public int max() {
        //空值判断!!!
       if (maxQueue.isEmpty()) throw new RuntimeException("队列为空!");
       return maxQueue.peekFirst();
    }
    public static void main(String[] args) {
        MaxQueue maxQueue = new MaxQueue();
        maxQueue.offer(2);
        maxQueue.offer(3);
        maxQueue.offer(4);
        maxQueue.offer(2);
        maxQueue.offer(6);
        maxQueue.offer(2);
        maxQueue.offer(5);
        maxQueue.offer(1);

        System.out.println(maxQueue.max());
        maxQueue.poll();
        maxQueue.poll();
        maxQueue.poll();
        maxQueue.poll();
        System.out.println(maxQueue.max());
        maxQueue.poll();
        System.out.println(maxQueue.max());
        maxQueue.poll();
        System.out.println(maxQueue.max());

    }

相关文章

  • 面试题59_2:队列的最大值

    定义一个队列,实现max方法得到队列中的最大值。 要求入列、出列以及邱最大值的方法时间复杂度都是O(1) priv...

  • LeetCode | 面试题59 - II. 队列的最大值【Py

    LeetCode 面试题59 - II. 队列的最大值【Medium】【Python】【队列】 问题 力扣 请定义...

  • 剑指offer第二版-59.2.队列的最大值

    本系列导航:剑指offer(第二版)java实现导航帖 面试题59.2:队列的最大值 题目要求:定义一个队列并实现...

  • 2021-04-02算法打卡

    1、队列的最大值请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、pu...

  • 单调双端队列

    0X00 模板题目 面试题59 - II. 队列的最大值 LCOF 维护一个单调递减(不是严格的是可以等的)的双端...

  • 面试题59:队列的最大值

    题目 滑动窗口的最大值给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组{2,3,4,...

  • 面试题59:队列的最大值

    题目一:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,...

  • 数据结构使用常识

    队列:在可以确定队列长度最大值的情况下,建议用循环队列,如果你无法预估队列的长度时,则用链队列。

  • (面试题59 - II)队列的最大值

    解题思路 主要思路:常规的遍历求队列最大值的方法时间复杂度太高,不符合题意。因此可考虑使用一个辅助队列sup来保存...

  • Tomcat 常用配置详解

    backlog/acceptCount 默认:100 半连接队列的最大值 AbstractEndpo...

网友评论

      本文标题:面试题59_2:队列的最大值

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