你现在是一场采用特殊赛制投篮大赛的记录员。
这场比赛由若于回合组成,过去几回合的得分可能会影响以后几回合的得分,比赛开始时,记录是空白的。
你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第i项操作,ops 遵循下述规则:
请你返回记录中所有得分的总和。
输入为一个字符串数组。
输出为一个整形数字。
def calculate(ops):
scores = deque() # 使用双端队列记录得分
for op in ops:
if op.isdigit():
# 如果操作是一个数字,则将其添加到队列中
scores.append(int(op))
elif op == '+':
# 如果操作是 '+'
if len(scores) < 2:
# 得分数量不足以计算总和
return -1
# 计算最后两次得分的总和
cur_score = scores[-1] + scores[-2]
scores.append(cur_score)
elif op == 'C':
# 如果操作是 'C',移除最后一次得分
scores.pop()
elif op == 'D':
# 如果操作是 'D',将最后一次得分翻倍
if len(scores) < 1:
# 没有得分可以翻倍
return -1
# 将最后一次得分翻倍后添加到队列中
cur_score = scores[-1] * 2
scores.append(cur_score)
# 计算队列中所有得分的总和
total_score = sum(scores)
return total_score
3 2 2 + 3 C 2 D
17
哪吒投了一个超远4分、又投了两个中距离3分,
+:表示本回合新获得的得分是前两次得分的总和;
4 + 3 + (3 + 3)
哪吒又投了一个超远4分,可惜犯规了C,4分不算。
C:表示本回合没有分数,并且前一次得分无效,将其从记录中移除;
4 + 3 + (3 + 3) + 4 - 4
哪吒又投了一个3分,
D:表示本回合新获得的得分是前一次得分的两倍;
卧槽,爆珠了,翻倍、
4 3 3 + 4 C 3 D
4 + 3 + 3 + (3 + 3) + 4 - 4 + 3 + (3 * 2) = 25
哪吒参加三分大赛,以25分的高分,力压斯蒂芬库里夺得三分大赛冠军。
下一篇:华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路
本文收录于,华为OD机试(Python)真题(A卷+B卷)
每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。