一个数据栈data,一个最小值栈min
vector<int> getMinStack(vector<vector<int> >& op) { // write code here stack<int>data; stack<int>min; vector<int>ans; for(vector<int>vec:op) { if(vec[0]==1) { data.push(vec[1]); if(min.empty())min.push(vec[1]);//单调栈为空,直接push else if(vec[1]<min.top()) min.push(vec[1]);//如果当前值比单调栈最小值栈顶值小,push } if(vec[0]==2) { if(min.top()==data.top()) min.pop();//判断出栈的是否是最小值 data.pop(); } if(vec[0]==3) ans.push_back(min.top());//单调栈栈顶为最小值,直接获取 } return ans; }