155. Min Stack(栈)

来源:互联网 发布:noesis.javascript 编辑:程序博客网 时间:2024/06/06 00:38

https://leetcode.com/problems/min-stack/description/

问题:实现一个栈,使得出栈,入栈,取最小值操作的时间复杂度都是O(1)。

思路:建立一个最小栈,储存最小值。

比如下面操作:

 操作               基本栈                最小栈          返回值push(1)            1                    1    push(2)            1 2                  1         pop()              1                    1push(-1)           1 -1                 1 -1getmin();          1 -1                 1 -1           -1pop():             1                    1getmin();          1                    1               1
class MinStack {public:    /** initialize your data structure here. */    stack<int>s;    stack<int>temp;    MinStack() {        ;    }    void push(int x) {         s.push(x);         if(temp.empty()||x==temp.top()) temp.push(x);         else if(temp.top()>x) temp.push(x);    }    void pop() {         if(!temp.empty()&&temp.top()==s.top()) temp.pop();         if(!s.empty()) s.pop();         return ;    }    int top() {        if(s.empty()) return NULL;        return s.top();    }    int getMin() {        if(temp.empty())  return NULL;        return temp.top();    }};/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */
原创粉丝点击