首页 > 学院 > 开发设计 > 正文

leetcode-155-Min Stack

2019-11-06 08:04:32
字体:
来源:转载
供稿:网友

问题

题目:[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(); */
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表