首页 > 其他 > 详细

leetcode:min stack

时间:2014-12-14 11:47:45      阅读:289      评论:0      收藏:0      [点我收藏+]

实现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

原文:http://www.cnblogs.com/mintmy/p/4162312.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!