LeetCode刷題(棧) 682 棒球比賽

2021-10-16 06:34:16 字數 1999 閱讀 9107

你現在是一場採用特殊賽制棒球比賽的記錄員。這場比賽由若干回合組成,過去幾回合的得分可能會影響以後幾回合的得分。

比賽開始時,記錄是空白的。你會得到乙個記錄操作的字串列表 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 1

<= ops.length <=

1000

ops[i] 為 "c"、"d"、"+",或者乙個表示整數的字串。整數範圍是 [-3

*104,3

*104

]對於 "+" 操作,題目資料保證記錄此操作時前面總是存在兩個有效的分數

對於 "c" 和 "d" 操作,題目資料保證記錄此操作時前面總是存在乙個有效的分數

class

solution

else

if(op==

"d")

//如果是「d」,從棧中彈出1個元素乘2,然後將結果壓入棧中

else

if(op==

"c")

//如果是「c」,從棧中彈出1個元素

else

}//全部出棧,計算總分

while

(!s.

empty()

)return num;}}

;

Leetcode 棧 682 棒球比賽

你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 ...

棧類題目學習 Leetcode682題 棒球比賽

你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 ...

leetcode刷題筆記 棧1

給定兩個沒有重複元素的陣列 nums1 和 nums2 其中nums1 是 nums2 的子集。找到 nums1 中每個元素在 nums2 中的下乙個比其大的值。nums1 中數字 x 的下乙個更大元素是指 x 在 nums2 中對應位置的右邊的第乙個比 x 大的元素。如果不存在,對應位置輸出 1。...