美文网首页
155. Min Stack

155. Min Stack

作者: a_void | 来源:发表于2016-09-21 22:04 被阅读0次

    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.
    

    Solution:

    class MinStack {
    public:
        /** initialize your data structure here. */
        stack<int> s;
        stack<int> m;
        
        MinStack() {
            
        }
        
        void push(int x) {
            s.push(x);
            if(m.empty() || (m.top() >= x)){
                m.push(x);
            }
        }
        
        void pop() {
            if(!s.empty()){
                int t = s.top();
                s.pop();
                if(!m.empty() && m.top() >= t){
                    m.pop();
                }
            }
        }
        
        int top() {
            return s.top();
        }
        
        int getMin() {
            return m.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();
     */
    

    相关文章

      网友评论

          本文标题:155. Min Stack

          本文链接:https://www.haomeiwen.com/subject/idoaettx.html