zoukankan      html  css  js  c++  java
  • 队列最大长度

    https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/

    基本思路就是4,3,2,5这个队里,如果5出现了,那么前面的数字的max就都是5了,所以维护一个双端队列把5出现后,前面的4个都清理掉

    import java.util.Deque;
    import java.util.LinkedList;
    
    class MaxQueue {
        private Deque<Integer> queue = new LinkedList<>();
        private Deque<Integer> maxQueue = new LinkedList<>();
    
        public MaxQueue() {
    
        }
    
        public int max_value() {
            if(maxQueue.size() > 0) {
                return maxQueue.peekFirst();
            }
            return -1;
        }
    
        public void push_back(int value) {
            queue.addLast(value);
            while (maxQueue.size() > 0 && maxQueue.peekLast() < value) {//删掉队尾比他小的,比如4,3,2,1的maxQueue也是4,3,2,1,如果这个时候插入一个53,那么2,1就没用了
                maxQueue.pollLast();
            }
            maxQueue.addLast(value);
        }
    
        public int pop_front() {
            if(queue.size() > 0) {
                int value = queue.poll();
                if (maxQueue.peekFirst() == value) {
                    maxQueue.poll();
                }
                return value;
            }
    
            return -1;
        }
    }
    
    /**
     * Your MaxQueue object will be instantiated and called as such:
     * MaxQueue obj = new MaxQueue();
     * int param_1 = obj.max_value();
     * obj.push_back(value);
     * int param_3 = obj.pop_front();
     */
    

      

  • 相关阅读:
    创建FLASK,同步docker
    FLASK Buleprint
    restful api
    Angular JS
    线程日志
    将项目部署到linux下的docker容器中
    安装和卸载docker
    学习目录总编
    Ansible
    装饰器
  • 原文地址:https://www.cnblogs.com/iamzhoug37/p/12970059.html
Copyright © 2011-2022 走看看