zoukankan      html  css  js  c++  java
  • 队列实现max操作,要求尽量提高效率。

    结合之前实现的 maxStack 和 用两个stack 实现一个Queue, 实现 MaxQueue

    import java.util.Stack;
    
    public class MaxQueue {
        MaxStack in = new MaxStack();
        MaxStack out = new MaxStack();
    
        public void enqueue(Integer a) {
            in.push(a);
        }
    
        public Integer dequeue() {
            shiftItems();
            return out.pop();
        }
    
        public Integer peek() {
            shiftItems();
            return out.peek();
        }
    
        public Integer max() {
            return Math.max(in.isEmpty() ? Integer.MIN_VALUE : in.max(), out.isEmpty() ? Integer.MIN_VALUE : out.max());
        }
    
        private void shiftItems() {
            if (!out.isEmpty())
                return;
            while (!in.isEmpty()) {
                out.push(in.pop());
            }
        }
    
        public static void main(String[] args) {
            MaxQueue queue = new MaxQueue();
            queue.enqueue(1);
            System.out.println(queue.max());
            queue.enqueue(2);
            System.out.println(queue.max());
            queue.enqueue(3);
            System.out.println(queue.max());
            queue.enqueue(4);
            System.out.println(queue.max());
            queue.dequeue();
            System.out.println(queue.max());
            queue.dequeue();
            System.out.println(queue.max());
            queue.dequeue();
            System.out.println(queue.max());
    
        }
    }
    
    class MaxStack {
        Stack<Integer> val = new Stack<Integer>();
        Stack<Integer> max = new Stack<Integer>();
    
        public boolean isEmpty() {
            return val.isEmpty();
        }
    
        public void push(Integer a) {
            val.push(a);
            if (max.isEmpty() || a >= max.peek())
                max.push(a);
        }
    
        public Integer pop() {
            Integer out = val.pop();
            if (out == max.peek())
                max.pop();
            return out;
        }
    
        public Integer peek() {
            return val.peek();
        }
    
        public Integer max() {
            return max.peek();
        }
    }
  • 相关阅读:
    Java
    hadoop MapReduce Yarn运行机制
    在eclipse上开发hadoop2.5.2程序的快捷方法
    eclipse快捷键
    HDFS原理介绍
    Java异常
    hadoop初识
    操作系统学习---进程管理(二)
    操作系统学习---进程管理(一)
    操作系统学习---虚拟内存
  • 原文地址:https://www.cnblogs.com/jdflyfly/p/3923631.html
Copyright © 2011-2022 走看看