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

2021-10-08 07:22:54 字數 1114 閱讀 3885

你現在是棒球比賽記錄員。 給定乙個字串列表,每個字串可以是以下四種型別之一:

1.整數(一輪的得分):直接表示您在本輪中獲得的積分數。

2. 「+」(一輪的得分):表示本輪獲得的得分是前兩輪有效 回合得分的總和。

3. 「d」(一輪的得分):表示本輪獲得的得分是前一輪有效 回合得分的兩倍。

4. 「c」(乙個操作,這不是乙個回合的分數):表示您獲得的最後乙個有效 回合的分數是無效的,應該被移除。

每一輪的操作都是永久性的,可能會對前一輪和後一輪產生影響。 你需要返回你在所有回合中得分的總和。

示例 1:

輸入: [「5」,「2」,「c」,「d」,"+"] 輸出: 30 解釋: 第1輪:你可以得到5分。總和是:5。

第2輪:你可以得到2分。總和是:7。 操作1:第2輪的資料無效。總和是:5。

第3輪:你可以得到10分(第2輪的資料已被刪除)。總數是:15。 第4輪:你可以得到5 + 10 = 15分。總數是:30。 示例 2:

輸入: [「5」,"-2",「4」,「c」,「d」,「9」,"+","+"] 輸出: 27 解釋: 第1輪:你可以得到5分。總和是:5。

第2輪:你可以得到-2分。總數是:3。 第3輪:你可以得到4分。總和是:7。 操作1:第3輪的資料無效。總數是:3。

第4輪:你可以得到-4分(第三輪的資料已被刪除)。總和是:-1。 第5輪:你可以得到9分。總數是:8。 第6輪:你可以得到-4 + 9 =

5分。總數是13。 第7輪:你可以得到9 + 5 = 14分。總數是27。

遇到數字壓棧

遇到+號 先記錄棧頂元素,然後彈棧,再記錄棧頂元素,然後將記錄的元素壓棧,再將兩個元素相加後壓棧。

遇到d 記錄棧頂元素,然後*2壓棧

遇到c 彈棧

思路很清晰哈哈哈。

class

solution

else

if(ch==

"d"&&

!res.

empty()

)else

}while

(!res.

empty()

)return sum;}}

;

LeetCode 6 有效的括號

題目如下 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5...

Leetcode 6 子串行問題

給定乙個未經排序的整數陣列,找到最長且連續的的遞增序列。思路 要找乙個最長且連續,關鍵是連續,那麼只要遍歷,發現不連續就歸零,記錄最大值即可。class solution else tmp nums i max num max num index index max num return max n...

Z字型變換 LeetCode6

將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 l c i r e t o e s i i g e d h n 之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 lciretoesiiged...