
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
}
stack<int> s;
stack<int> mins;
void push(int val) {
if(mins.empty()){ // mins栈为空,元素直接push
mins.push(val);
}else{
int tmp = mins.top();
if(val<=tmp) // 如果不为空,判断当前元素小于等于则直接入minis栈
mins.push(val);
}
s.push(val);
}
void pop() {
int tmp = s.top();
if(tmp==mins.top()) // 弹出元素的时候如果弹出的元素与mini栈的栈顶元素形同,同样弹出
mins.pop();
s.pop();
}
int top() {
return s.top();
}
int getMin() {
return mins.top();
}
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/