解答(打败98.60%)
class Solution {
public:
int calPoints(vector<string>& ops) {
vector<int> v;
int sum=0;
for(auto it=ops.begin();it!=ops.end();++it){
if(*it=="+"){
auto last=v.rbegin();
auto second=++v.rbegin();
int num=(*last)+(*second);
v.push_back(num);
}
else if(*it=="D"){
auto last=v.rbegin();
int num=*last;
v.push_back(num*2);
}
else if(*it=="C"){
v.pop_back();
}
else{
int num=stoi(*it);
v.push_back(num);
}
}
for(auto it=v.begin();it!=v.end();++it){
sum += *it;
}
return sum;
}
};
笔记
- 拿到最后元素有俩种方法
vector<int> v;
1. int last=(*v.rbegin());
2. int last=v.back();
问题
vector<int> v;
1
auto last = v.rbegin();
auto second = ++v.rbegin();
2
auto last = v.rbegin();
auto second = ++last;
为什么第一种就能拿到倒数第二个元素?