首页 > 其他 > 详细

LeetCode Min Stack

时间:2014-12-08 23:08:48      阅读:700      评论:0      收藏: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.

Show Tags
Have you met this question in a real interview? 
Yes
 
No

Discuss

题意:写一个新的栈:支持入栈,出栈,得到栈顶,和得到此时栈最小的那个数

思路:前三个操作都可以用一个栈来实现,求最小的话就需要一个新的单调栈来维护了,这个新的单调栈需要注意的地方是:当原始的栈pop掉一个数的时候可能会影响到这个单调栈,只要判断此时pop掉的话,是不是单调栈的栈顶就能解决了,因为这个单调栈是原始栈的子集


class MinStack {
public:
    void push(int x) {
        st.push(x);
        if (stm.empty() || stm.top() >= x) stm.push(x);
    }

    void pop() {
        int top = st.top();
        st.pop();
        if (top == stm.top()) stm.pop();
    }

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

    int getMin() {
        return stm.top();
    }
    
private:
        stack<int> st;
        stack<int> stm;
};


LeetCode Min Stack

原文:http://blog.csdn.net/u011345136/article/details/41809349

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