【leetcode】682. Baseball Game

本文介绍了一种使用Python列表作为栈来处理一系列操作指令的方法,这些指令包括取消上一次操作(C)、将当前分数加倍(D)及获取前两次操作的分数之和(+)。通过解析这些指令,文章提供了一个解决方案来计算最终的总得分。

33.89%  

class Solution(object):
    def calPoints(self, ops):
        """
        :type ops: List[str]
        :rtype: int
        """
        result = 0
        for i,char in enumerate(ops):
            if char=='C':
                for ii,num in enumerate(ops[i-1::-1]):
                    if num=='invalid':
                        continue
                    else:
                        result -= num
                        ops[i-1-ii] = 'invalid'
                        ops[i] = 'invalid'
                        break
            elif char=='D':
                for num in ops[i-1::-1]:
                    if num=='invalid':
                        continue
                    else:
                        ops[i] = 2*num
                        result += 2*num
                        break
            elif char=='+':
                cnt = 0
                ssum = 0
                for num in ops[i-1::-1]:
                    if num=='invalid':
                        continue
                    else:
                        cnt+=1
                        ssum+=num
                        if cnt>1:
                            break
                ops[i] = ssum
                result += ops[i]
            else:
                ops[i] = int(char)
                result += ops[i]
        return result

————————————————————

天哪,这个考点在list,把list当作一个栈来做,stack

99.83%

class Solution(object):
    def calPoints(self, ops):
        """
        :type ops: List[str]
        :rtype: int
        """
        result = []
        for char in ops:
            if char=='C':
                result.pop()
            elif char=='D':
                result.append(2*result[-1])
            elif char=='+':
                result.append(result[-1]+result[-2])
            else:
                result.append(int(char))
        return sum(result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值