实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
注意事项:如果堆栈中没有数字则不能进行min方法的调用
样例:如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1
class MinStack {
public:
MinStack() {
// do initialization if necessary
}
void push(int number) {
stk.push(number);
if (minstk.empty() or number <= minstk.top()) {
minstk.push(number);
}
}
int pop() {
int top = stk.top();
stk.pop();
if (top == minstk.top()) {
minstk.pop();
}
return top;
}
int min() {
return minstk.top();
}
private:
stack<int> stk; //数据栈
stack<int> minstk; //辅助栈
};