使用一个辅助栈,始终维护当前的最小值
class MinStack {
public:
/** initialize your data structure here. */
stack<int> st;
stack<int> st_min;
MinStack() {
}
void push(int x) {
st.push(x);
if(st_min.empty()||x<st_min.top()) st_min.push(x);
else st_min.push(st_min.top());
}
void pop() {
st.pop();
st_min.pop();
}
int top() {
return st.top();
}
int getMin() {
return st_min.top();
}
};