↓快轉到主要內容
  1. LeetCode/

LeetCode 682: Baseball Game

·1 分鐘· ·
LeetCode Easy Array Stack Simulation
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-08-30

  • 提交紀錄:Accepted(一次通過)

解題思路
#

每個操作只跟最近的分數有關(Stack 模板二):數字就 push;C 就 pop;D 就 push(2 * st[-1]);+ 就 push(st[-1] + st[-2])。最後加總 stack。

我的解法
#

class Solution:
    def calPoints(self, operations: List[str]) -> int:
        st = []
        for op in operations:
            if op == "C":
                st.pop()
            elif op == "D":
                st.append(2 * st[-1])
            elif op == "+":
                st.append(st[-1] + st[-2])
            else:
                st.append(int(op))
        return sum(st)

複雜度
#

時間 O(n),空間 O(n)。

要特別避免的錯誤
#

  • 分數可能是負數,用 int(op) 轉換,不要用 isdigit 判斷。

面試口說整理
#

每個操作只跟最近的分數有關,我用 stack 存有效的分數,C 刪掉最後一個、D 放入最後一個的兩倍、加號放入最後兩個的和,最後加總。時間 O(n)。

相關文章

LeetCode 566: Reshape the Matrix
·1 分鐘
LeetCode Easy Array Matrix Simulation
LeetCode 566 解題筆記:元素總數不同就回傳原矩陣;否則第 k 個元素放到 (k // c, k % c)
LeetCode 495: Teemo Attacking
·1 分鐘
LeetCode Easy Array Simulation
LeetCode 495 解題筆記:每次攻擊貢獻 min(到下一次攻擊的間隔, duration),最後一次貢獻完整的 duration
LeetCode 657: Robot Return to Origin
·1 分鐘
LeetCode Easy String Simulation
LeetCode 657 解題筆記:回到原點等價於上下次數相同、左右次數相同
LeetCode 594: Longest Harmonious Subsequence
·1 分鐘
LeetCode Easy Array Hash-Table Sliding-Window Sorting
LeetCode 594 解題筆記:子序列不用連續,所以只要計數,每個 x 看 x 和 x + 1 的次數加起來
LeetCode 500: Keyboard Row
·1 分鐘
LeetCode Easy Array Hash-Table String
LeetCode 500 解題筆記:鍵盤的三列各做成集合,單字轉小寫後的字元集合是某一列的子集就保留
LeetCode 506: Relative Ranks
·1 分鐘
LeetCode Easy Array Sorting Heap-Priority-Queue
LeetCode 506 解題筆記:把 index 按分數由高到低排序,前三名給獎牌,其他給名次的字串,放回原本的位置