class Solution {
public:
int evalRPN(vector<string>& tokens) {
if(tokens.empty()) return 0;
stack<int> stk;
int res;
for(int i=0; i<tokens.size(); i++){
if(tokens[i]=="+" || tokens[i]=="-" || tokens[i]=="*" || tokens[i]=="/"){
int a = stk.top(); stk.pop();
int b = stk.top(); stk.pop();
if(tokens[i]=="+") stk.push(b+a);
if(tokens[i]=="-") stk.push(b-a);
if(tokens[i]=="*") stk.push(b*a);
if(tokens[i]=="/") stk.push(b/a);
}else{
stk.push(stoi(tokens[i]));
}
}
res = stk.top();
return res;
}
};
37)小行星碰撞
class Solution {
public:
vector<int> asteroidCollision(vector<int>& asteroids) {
vector<int> res;
for(auto item : asteroids){
while(!res.empty() && res.back()>0 && res.back()<-item){
res.pop_back();
}
if(!res.empty() && item<0 && res.back()==-item){
res.pop_back();
}else if(res.empty() || res.back()<0 || item>0){
res.push_back(item);
}
}
return res;
}
};
38)每日温度
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
vector<int> T(temperatures.size());
stack<int> s;
for(int i=temperatures.size()-1; i>=0; i--){
while(!s.empty() && temperatures[s.top()]<=temperatures[i]){
s.pop();
}
T[i] = s.empty() ? 0 : s.top()-i;
s.push(i);
}
return T;
}
};