class Solution {
public:
/**
[[1,3],[1,2],[1,1],[3],[2],[3]]
* 数组第一个代表操作,1==push,2==pop,2==getMin
* 所以 1出现时,后面需要接push的数字
* 把所有的操作实现完,输出结果就行
*/
vector<int> getMinStack(vector<vector<int> >& op) {
vector<int> ans;
if(op.empty()) return ans;
for(int i=0;i<op.size();i++){
if(op[i][0]==1 && op[i].size()==2){
push(op[i][1]);
}
else if(op[i][0]==2 && op[i].size()==1)
pop();
else if(op[i][0]==3 && op[i].size()==1)
ans.push_back(getMin());
}
return ans;
}
void push(int data){
if(minStack.empty() ||data<minStack.top())
minStack.push(data);
else
minStack.push(minStack.top());
dataStack.push(data);
}
void pop(){
dataStack.pop();
minStack.pop();
}
int getMin(){
return minStack.top();
}
private:
stack<int> dataStack;
stack<int> minStack;
};