用另一个栈,存储各个状态最小值。利用这个最小值栈的栈顶元素记录每一个数据栈的最小值
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
}
void push(int x) {
data.push(x);
if(minst.empty())//如果最小栈为空,直接把当前这个数压入最小栈
minst.push(x);
else{
if(x>minst.top())
x = minst.top();
minst.push(x);//最小栈压入当前的x和当前最小栈中较小的那个元素
}
}
void pop() {
data.pop();
minst.pop();
}
int top() {
int x = data.top();
return x;
}
int getMin() {
return minst.top();
}
private:
stack<int> data;
stack<int> minst;
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.getMin();
*/