思路:
维护两个栈,一个普通栈,一个最小元素栈。
class MinStack {
private:
stack<int> s;
stack<int> s_min;
public:
void push(int x) {
s.push(x);
if(s_min.empty() || x <= s_min.top()) {
s_min.push(x);
}
}
void pop() {
if(!s.empty()) {
int top = s.top();
s.pop();
if(top == s_min.top()) {
s_min.pop();
}
}
}
int top() {
if(!s.empty()) {
return s.top();
}
}
int getMin() {
if(!s_min.empty()) {
return s_min.top();
}
}
};