这一题就是想在常数时间内取出最小值,于是我利用了辅助数据结构,多存了一个栈,每次都push当前最小的值,如果当前x比min.top()大,则存min.top(),否则存x;pop的时候,将两个栈都各pop一次;
class MinStack {
public:
stack<int> min;
stack<int> var;
/** initialize your data structure here. */
MinStack() {
}
void push(int x) {
if(var.empty())
{
var.push(x);
min.push(x);
}
else{
if(min.top()>x) min.push(x);
else min.push(min.top());
var.push(x);
}
}
void pop() {
var.pop();
min.pop();
}
int top() {
return var.top();
}
int getMin() {
return min.top();
}
};