实现一个栈, 支持以下操作:
push(val) 将 val 压入栈
pop() 将栈顶元素弹出, 并返回这个弹出的元素
min() 返回栈中元素的最小值
要求 O(1) 开销.
样例
样例 2:
输入:
push(1)
min()
push(2)
min()
push(3)
min()
输出:
1
1
1
注意事项
保证栈中没有数字时不会调用 min()
class MinStack {
public:
MinStack() {
}
void push(int number) {
if(s.size()==0) mins=number;
else mins=number<=mins?number:mins;
s.push(number);
minstack.push(mins);
}
int pop() {
int top=s.top();
s.pop();
minstack.pop();
if(minstack.empty()) mins=2147483647 ;
else mins=minstack.top();
return top;
}
int min() {
return minstack.top();
}
private:
int mins;
stack<int> s;
stack<int> minstack;
};