单调栈
每日温度
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
vector<int> res(temperatures.size(),0);
stack<int> s;
s.push(0);
for(int i=1;i<temperatures.size();i++){
while(!s.empty()&&temperatures[s.top()]<temperatures[i]){
res[s.top()]=i-s.top();
s.pop();
}
s.push(i);
}
return res;
}
};
逆波兰表达式的求值
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> s;
for(int i=0;i<tokens.size();i++){
if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/"){
int n2=s.top();
s.pop();
int n1=s.top();
s.pop();
int res;
if(tokens[i]=="+")
res=n1+n2;
else if(tokens[i]=="-")
res=n1-n2;
else if(tokens[i]=="*")
res=n1*n2;
else
res=n1/n2;
s.push(res);
}else{
s.push(stoi(tokens[i]));
}
}
return s.top();
}
};