用多一个栈来存储每个状态时栈的最小元素
class MinStack {
stack<int> Stack, Min;
public:
MinStack() {
Min.push(INT32_MAX);
}
void push(int val) {
Stack.push(val);
Min.push(min(Min.top(), val));
}
void pop() {
Stack.pop();
Min.pop();
}
int top() {
return Stack.top();
}
int getMin() {
return Min.top();
}
};