跳到主要内容

682.棒球比赛

链接:682.棒球比赛
难度:Easy
标签:栈、数组、模拟
简介:请你返回记录中所有得分的总和。

题解 1 - typescript

  • 编辑时间:2021-03-19
  • 执行用时:80ms
  • 内存消耗:39.9MB
  • 编程语言:typescript
  • 解法介绍:dfs。
class Solution {
public:
int calPoints(vector<string> &ops) {
vector<int> list;
for (auto &op : ops) {
int n = list.size();
if (op == "+") {
list.push_back(list[n - 1] + list[n - 2]);
} else if (op == "D") {
list.push_back(list[n - 1] * 2);
} else if (op == "C") {
list.pop_back();
} else {
list.push_back(stoi(op));
}
}
int ans = 0;
for (auto &num : list) ans += num;
return ans;
}
};

题解 2 - cpp

  • 编辑时间:2022-03-26
  • 执行用时:4ms
  • 内存消耗:8.1MB
  • 编程语言:cpp
  • 解法介绍:dfs。
class Solution {
public:
int calPoints(vector<string> &ops) {
vector<int> list;
for (auto &op : ops) {
int n = list.size();
if (op == "+") {
list.push_back(list[n - 1] + list[n - 2]);
} else if (op == "D") {
list.push_back(list[n - 1] * 2);
} else if (op == "C") {
list.pop_back();
} else {
list.push_back(stoi(op));
}
}
int ans = 0;
for (auto &num : list) ans += num;
return ans;
}
};

题解 3 - python

  • 编辑时间:2024-07-29
  • 执行用时:32ms
  • 内存消耗:16.43MB
  • 编程语言:python
  • 解法介绍:枚举每一个块与另一个块是否位置产生交集。
class Solution:
def calPoints(self, operations: List[str]) -> int:
s = []
for op in operations:
if op == '+':
s.append(s[-1] + s[-2])
elif op == 'D':
s.append(s[-1] * 2)
elif op == 'C':
s.pop()
else:
s.append(int(op))
return sum(s)