


可以用一个栈(列表)来维护得分记录,按照 ops 的操作逐步更新栈,最后求和即可。以下是 Python 实现:
def calPoints(ops):
stack = []
for op in ops:
if op == "+":
stack.append(stack[-1] + stack[-2])
elif op == "D":
stack.append(2 * stack[-1])
elif op == "C":
stack.pop()
else:
stack.append(int(op))
return sum(stack)
# 测试示例
print(calPoints(["5", "2", "C", "D", "+"])) # 输出 30
print(calPoints(["5", "-2", "4", "C", "D", "9", "+", "+"])) # 输出 27
解释:
-
使用栈 记录分数,每个操作都按照规则修改栈。
-
整数
x直接入栈。 -
"+" 操作 取栈顶两个元素相加,并将结果入栈。
-
"D" 操作 取栈顶元素的两倍并入栈。
-
"C" 操作 移除栈顶元素。
-
最终求和 返回得分总和。
这个算法的 时间复杂度是 O(n),空间复杂度最坏情况也是 O(n)。
377

被折叠的 条评论
为什么被折叠?



