时间复杂度(O( n))
class MinStack {
public:
vector<int> vec;
vector<int> vecmin;
MinStack() {
}
void push(int x) {
vec.push_back(x);
if(vecmin.empty())
vecmin.push_back(x);
else{
vecmin.push_back(x);
for(int i=vecmin.size()-2;i>=0;--i)
if(vecmin[i+1]>vecmin[i]){
int tmp = vecmin[i];
vecmin[i] = vecmin[i+1];
vecmin[i+1] = tmp;
}else break;
}
}
void pop() {
for(vector<int>::iterator iter=vecmin.begin(); iter!=vecmin.end(); iter++)
if( *iter == vec.back()){
iter = vecmin.erase(iter);
break;
}
vec.pop_back();
}
int top() {
return vec.back();
}
int getMin() {
return vecmin.back();
}
};