leetcode-155-Min Stack

问题

题目:[leetcode-155]

思路

用一个变量min保存最小值肯定不行。 因为一旦该元素出栈,不行了。

所以,建立辅助栈。这个栈保存曾经的最小元素。 当然,不会出现这个栈为空,而主栈不为空的情形。 比如,7,8,1 主栈 7->8->1 辅助栈 7->1 8一定会在7之前出栈,否则他就一定比8小。

代码

class MinStack { public: /** initialize your data structure here. */ MinStack(){ } void push(int x) { stk.push(x); if(helper.empty()) helper.push(x); else if( x <= helper.top() ) helper.push(x); } void pop() { if( stk.top() == helper.top() ){ stk.pop(); helper.pop(); } else stk.pop(); } int top() { return stk.top(); } int getMin() { return helper.top(); } PRivate: stack<int> stk; stack<int> helper; // 存储曾经的最小元素 }; /** * 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(); */