Menu
CoddyTech

Baseball Game

简单栈python iconjava iconcpp iconc iconjs icon+10

你要为一种特殊的游戏记分。按从左到右的顺序读取 operations,每一项都会更改记分记录。像 "7" 或 "-2" 这样的整数会添加对应分数。"+" 会添加最近两次得分的总和,"D" 会添加最近一次得分的两倍,"C" 会永久移除最近一次得分。

编写一个名为 calPoints 的函数,返回最后一次操作后记分记录中剩余分数的总和。空记录的总和为 0。

函数

calPoints(operations: string-array) → integer
operationsstring-array
按顺序执行的操作:以文本形式表示的整数,或“+”、“D”、“C”
返回值integer
结束时仍保留在记录中的分数总和

约束条件

  • 1 ≤ operations.length ≤ 5000
  • 每个条目都是 "+"、"D"、"C",或用十进制表示且满足 -3 × 104 ≤ value ≤ 3 × 104 的整数。
  • 每个操作都有效:只有当记录中至少有两个分数时,才会出现 "+";只有当记录中至少有一个分数时,才会出现 "D" 和 "C"。
  • 记录中的每个分数和最终总和都可以用 32 位有符号整数表示。

示例

输入
operations = ["4", "-2", "D", "+", "C", "7"]
输出
5
解释
记录增长为 [4, -2],"D" 添加 -4,"+" 将 -2 + -4 = -6 相加,"C" 移除这个 -6,最后加入 7。记录 [4, -2, -4, 7] 的总和为 5。
challenge icon

进阶

如何添加一种操作,以撤销最近一次 "C",并恢复被取消的分数,且时间复杂度为 O(1)?

重置代码
def calPoints(operations):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

operations = ["4", "-2", "D", "+", "C", "7"]

预期输出

5