好像是剑指offer上的原题。主要是要用额外的空间保存当前最小值的信息。
class MinStack {
public:
void push(int x) {
num.push(x);
if(mins.size()>0){
int min=mins.top();
if(min>=x) mins.push(x);
}
else{
mins.push(x);
}
}
void pop() {
if(num.size()==0) return ;
int topnum=num.top();
if(topnum==mins.top()){
mins.pop();
}
num.pop();
}
int top() {
if(num.size()>0) return num.top();
}
int getMin() {
if(mins.size()>0) return mins.top();
}
stack<int> num;
stack<int> mins;
};