一道简单的模拟题,思路总的来说就是题目说啥你做啥,这里我使用vector
保存每一次的记分的记录,当连续删除时就不会丢失信息,在操作的同时就计算答案,可以少循环遍历一次。
我自己因为一些愚蠢的问题导致第一时间没有做出来,有点丢脸,思路有了,动手写代码,AC代码如下:
class Solution {
public:
int calPoints(vector<string>& ops) {
int len = ops.size();
int ans = 0;
vector<int> tmp(len+10);
for(int i=0;i<len;i++) {
if(ops[i] == "+") {
ans += tmp[tmp.size()-1] + tmp[tmp.size()-2];
tmp.push_back(tmp[tmp.size()-1] + tmp[tmp.size()-2]);
}else if(ops[i] == "D") {
ans += 2 * tmp[tmp.size()-1];
tmp.push_back(2 * tmp[tmp.size()-1]);
}else if(ops[i] == "C") {
ans = ans - tmp[tmp.size()-1];
tmp.pop_back();
}else {
ans += stoi(ops[i]);
tmp.push_back(stoi(ops[i]));
}
}
return ans;
}
};