python-leetcode-682. 棒球比赛

682. 棒球比赛 - 力扣(LeetCode)

可以用一个栈(列表)来维护得分记录,按照 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

解释:

  1. 使用栈 记录分数,每个操作都按照规则修改栈。

  2. 整数 x 直接入栈。

  3. "+" 操作 取栈顶两个元素相加,并将结果入栈。

  4. "D" 操作 取栈顶元素的两倍并入栈。

  5. "C" 操作 移除栈顶元素。

  6. 最终求和 返回得分总和。

这个算法的 时间复杂度是 O(n),空间复杂度最坏情况也是 O(n)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值