• Leetcode Min Stack


    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

    • push(x) -- Push element x onto stack.
    • pop() -- Removes the element on top of the stack.
    • top() -- Get the top element.
    • getMin() -- Retrieve the minimum element in the stack.

    解题思路:

    比较直观。用一个min stack专门存放最小值,如果有比它小或是相等的(有多个平行的最小值都要单独存放,否则pop后会出问题),

    则存放其到minstack.


    Java code:

    class MinStack {
        Stack<Integer> elements = new Stack<Integer>();  
        Stack<Integer> minStack = new Stack<Integer>();  
          
        public void push(int x) {
           elements.push(x);
           if(minStack.isEmpty() || x <= minStack.peek()){
               minStack.push(x);
           }
        }
    
        public void pop() {
           if(elements.isEmpty()){
               return;
           }
           if((int)elements.peek() == (int)(minStack.peek())){
               minStack.pop();
           }
           elements.pop();
        }
    
        public int top() {
            return elements.peek();
        }
    
        public int getMin() {
            return minStack.peek();
        }
    }

    Reference:

    1. http://www.cnblogs.com/yuzhangcmu/p/4106783.html

  • 相关阅读:
    DAY 179 在Flask中使用MongoDB:Flask-MongoEngine
    DAY 178 oracle基础
    DAY 177 mongoengine
    DAY 176 redis教程
    存储器
    cpu
    java 类文件类型
    线程池
    CopyOnWrite容器
    ConcurrentHashMap
  • 原文地址:https://www.cnblogs.com/anne-vista/p/4865637.html
Copyright © 2020-2023  润新知