码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode:min stack

时间:2014-12-14 11:50:46      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   sp   div   log   ad   amp   as   

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

标签:style   blog   color   sp   div   log   ad   amp   as   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!