leetcode:min stack

实现O(1)时间取得栈最小值。

基本思路是新建一个minstack的栈,维护minstack的从上到下递增序,栈顶位当前stack最小值。

当push时比较如果比minstack栈顶小于或等于就push进去,pop的时候如果要pop的元素与minstack栈顶相等从minstack同时pop。

class MinStack {
private:
    stack<int> s,minStack;
public:
    void push(int x) {
        s.push(x);
        if (minStack.empty() || x<=minStack.top())
        {
            minStack.push(x);
        }
    }

    void pop() {
        if (!minStack.empty() && s.top()==minStack.top())
            minStack.pop();
        s.pop();
    }

    int top() {
        return s.top();
    }

    int getMin() {
         return minStack.top();
    }

};
原文地址:https://www.cnblogs.com/mintmy/p/4162312.html