一个数据栈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;
}

京公网安备 11010502036488号