首页 > 代码库 > leetcode:min stack

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();    }};

leetcode:min stack