【LeetCode】Min Stack

来源:互联网 发布:量化投资编程语言 编辑:程序博客网 时间:2024/06/03 18:43
class MinStack {public:    void push(int x) {if (mini.empty()){    mini.push(x);mystack.push(x);return;    }if (mini.top()>=x){mini.push(x);}mystack.push(x);return;    }    void pop() {        if(!mystack.empty()){    if(mystack.top()==mini.top()){       mini.pop();}mystack.pop();        }    }    int top() {        return mystack.top();    }    int getMin() {        return mini.top();    }stack<int> mini;stack<int> mystack;};


这道题的关键在于

mini.top()>=x

这句,我试了很多次没过是因为没有加=号,因为我认为只要不是最小的才往mini栈里添加最小元素。但是因为最小的元素可能有多个,所以每个最小的元素如果只记一次,一旦清除了就不知道后面有没有这个最小的元素了。后来我又设计了一个计数器,用来记录每个最小元素的个数,结果那个方法报超出内存限制的错误,所以最好就是这个方法。
0 0
原创粉丝点击