題目:
682.棒球比賽
你現在是一場採特殊賽制棒球比賽的記錄員。這場比賽由若干回合組成,過去幾回合的得分可能會影響以後幾回合的得分。
比賽開始時,記錄是空白的。你會得到乙個記錄操作的字串列表 ops,其中 ops[i] 是你需要記錄的第 i 項操作,ops 遵循下述規則:
整數 x - 表示本回合新獲得分數 x
「+」 - 表示本回合新獲得的得分是前兩次得分的總和。題目資料保證記錄此操作時前面總是存在兩個有效的分數。
「d」 - 表示本回合新獲得的得分是前一次得分的兩倍。題目資料保證記錄此操作時前面總是存在乙個有效的分數。
「c」 - 表示前一次得分無效,將其從記錄中移除。題目資料保證記錄此操作時前面總是存在乙個有效的分數。
請你返回記錄中所有得分的總和。
示例 1:
輸入:ops =
["5"
,"2"
,"c"
,"d"
,"+"
]輸出:30
解釋:"5"
- 記錄加 5 ,記錄現在是 [5]
"2"- 記錄加 2 ,記錄現在是 [5,
2]"c"- 使前一次得分的記錄無效並將其移除,記錄現在是 [5]
."d"
- 記錄加 2*5
=10 ,記錄現在是 [5,
10]."+"
- 記錄加 5+10
=15 ,記錄現在是 [5,
10,15]
.所有得分的總和 5+10
+15=30
示例 2:
輸入:ops =
["5"
,"-2"
,"4"
,"c"
,"d"
,"9"
,"+"
,"+"
]輸出:27
解釋:"5"
- 記錄加 5 ,記錄現在是 [5]
"-2"
- 記錄加 -
2 ,記錄現在是 [5,
-2]"4"
- 記錄加 4 ,記錄現在是 [5,
-2,4
]"c"
- 使前一次得分的記錄無效並將其移除,記錄現在是 [5,
-2]"d"
- 記錄加 2*-
2=-4 ,記錄現在是 [5,
-2,-
4]"9"- 記錄加 9 ,記錄現在是 [5,
-2,-
4,9]
"+"- 記錄加 -4+
9=5 ,記錄現在是 [5,
-2,-
4,9,
5]"+"- 記錄加 9+5
=14 ,記錄現在是 [5,
-2,-
4,9,
5,14]
所有得分的總和 5+-
2+-4
+9+5
+14=27
示例 3:
輸入:ops =
["1"
]輸出:1
解題思路:題目給出四種情況:
若為』+』,則本輪得分即為前兩輪得分之和
若為』d』,則本輪得分為前一輪得分的兩倍
若為』c』,則刪掉上一輪得分,用pop函式
**:
class
solution
:def
calpoints
(self, ops: list[
str])-
>
int:
score =
for i in ops:
if i ==
'+':-1
]+ score[-2
])elif i ==
'c':
score.pop(
)elif i ==
'd':-1
]*2)
else
:int
(i))
return
sum(score)
提交記錄: LeetCode 682 棒球比賽
你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 表示...
Leetcode 682 棒球比賽
你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 表示...
LeetCode682 棒球比賽
你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 表示...