zoukankan      html  css  js  c++  java
  • 队列的最大值

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/12437319.html

    队列的最大值

    题目链接:https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/comments/

    定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。

    若队列为空,pop_front 和 max_value 需要返回 -1

    示例 1:

    输入: 

    ["MaxQueue","push_back","push_back","max_value","pop_front","max_value"]

    [[],[1],[2],[],[],[]]

    输出: [null,null,null,2,1,2]

    示例 2:

    输入: 

    ["MaxQueue","pop_front","max_value"]

    [[],[],[]]

    输出: [null,-1,-1]

    题解:

             题意:一开始题目都没有读懂,后来看了好多题解也没有说题目啥意思,最后看代码一点一点才明白题意,欣姐也给我找了一个题解才更加明白,题目给的示例中输入:给的示例第一列的函数和第二列的数值是对应的,比如题目给的第一个例子可以理解为以下步骤,这里是欣姐提供给我看的:

    MaxQueue” 生成队列

            [] 传入的值为空

            无输出,故输出为null

    2、 "push_back" 向队列传入元素

            [1] 传入的值为1

            此时队列中只有一个1

            函数无输出,故输出为null

    3、 "push_back" 向队列传入元素

            [2] 传入的值为2

            此时队列为 --进-> [2,1] --出->

            函数无输出,故输出为null

    4、 "max_value" 求队列中的最大值

            [] 传入的值为空

            输出为2

    5、 "pop_front" 删除队列头部元素

            [] 传入的值为空

            函数pop_front还要输出删除元素的值,故输出为1

    思路:我看的官方代码,官方用的暴力破解,直接找一个队列中的最大值,如果进队一个元素,则和最大值做比较,大于最大值,则把进入队列的值赋值给最大值,如果进队的值没有当前的最大值大,则不做任何操作。

    代码如下:

    class MaxQueue {
        LinkedList<Integer> queue;
        int maxValue;
        public MaxQueue() {
            queue = new LinkedList<>();
            maxValue = Integer.MIN_VALUE;
        }
        
        public int max_value() {
            if (queue.isEmpty())
                return -1;
            return maxValue;
        }
        
        public void push_back(int value) {
            queue.addLast(value);
            if (value > maxValue)
                maxValue = value;
        }
        
        public int pop_front() {
            if (queue.isEmpty())
                return -1;
            int firstNum = queue.removeFirst();
            if (firstNum == maxValue)
                getMax();
            return firstNum;
        }
    
        public void getMax() {
            maxValue = Integer.MIN_VALUE;
            for (int num:queue)
                maxValue = Math.max(maxValue, num);
        }
    }
  • 相关阅读:
    Python测试开发Tkinter-----(Button--按钮)
    Python测试开发Tkinter------(Frame--框架)
    Python测试开发Tkinter-----(Tkinter--创建顶层窗口及Label)
    python2.7 Scripts环境变量配置 requests bs4 selenium安装方法
    重要知识点:内网系列
    重点知识:系统区分法,响应码,client-ip限制,抓https包的方法
    重点知识:MD5
    01渗透测试基础
    渗透测试之信息收集篇
    sqlmap安装与使用基础
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/12437319.html
Copyright © 2011-2022 走看看