zoukankan      html  css  js  c++  java
  • 155. 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.

    Example:

    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.getMin();   --> Returns -3.
    minStack.pop();
    minStack.top();      --> Returns 0.
    minStack.getMin();   --> Returns -2.

    思路:用两个栈,其中一个栈用来维护最小值序列,栈顶为当前序列最小值。

    class MinStack {
    public:
        /** initialize your data structure here. */
        stack<int> s;
        stack<int> ms;
        MinStack() {
            while(!s.empty()) s.pop();
            while(!ms.empty()) ms.pop();
        }
        void push(int x) {
            s.push(x);
            if (ms.empty() || x <= ms.top()) ms.push(x);
        }
      
        void pop() {
            int x = s.top();
            s.pop();
            if (!ms.empty() && x <= ms.top()) ms.pop();
        }
        
        int top() {
            return s.top();
        }
        
        int getMin() {
            return ms.top();
        }
    };
    
    /**
     * Your MinStack object will be instantiated and called as such:
     * MinStack obj = new MinStack();
     * obj.push(x);
     * obj.pop();
     * int param_3 = obj.top();
     * int param_4 = obj.getMin();
     */

    挺巧妙的,之前一直没想出来怎么O(1)查最小值....

  • 相关阅读:
    双线性过滤
    textureView
    cubemap
    selfshadow
    cbuffer padding
    异常
    Python深浅拷贝
    数据类型分类
    集合类型内置方法
    字典数据类型内置方法
  • 原文地址:https://www.cnblogs.com/pk28/p/7232989.html
Copyright © 2011-2022 走看看