Min Stack
Posted summerkiki
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Min Stack相关的知识,希望对你有一定的参考价值。
这里面有一个注意的点是,如果现在要push x,且x等于当前存在的最小值(栈中已经有了x)时,也要把x进栈。否则当x出栈时,当前最小值也跟着出栈,但是原栈中最小值元素依然还有,此时最小值却发生了错误。
class MinStack { public: /** initialize your data structure here. */ MinStack() { } void push(int x) { s1.push(x); if(!s2.size()) s2.push(x); else if(x<=s2.top()) s2.push(x); } void pop() { if(s1.size()) { if(s1.top()==s2.top()) { s1.pop(); s2.pop(); } else s1.pop(); } } int top() { return s1.top(); } int getMin() {return s2.top(); } private: stack<int> s1; stack<int> s2; }; /** * 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(); */
以上是关于Min Stack的主要内容,如果未能解决你的问题,请参考以下文章