682. Baseball Game (5月28日)

解答(打败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;
    }
};

笔记

  1. 拿到最后元素有俩种方法
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;

为什么第一种就能拿到倒数第二个元素?

猜你喜欢

转载自www.cnblogs.com/cs-niaocai/p/9098767.html