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

LeetCode 118: Pascal's Triangle

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

基本資料
#

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

  • 提交紀錄:Accepted ×6

解題思路
#

第 i 列有 i + 1 個數,頭尾是 1,中間的 row[j] = prev[j - 1] + prev[j](Linear DP 模板一)。先開好全部是 1 的列,再填中間。

我的解法
#

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        rows = [[1] * (i + 1) for i in range(numRows)]
        for i in range(2, numRows):
            for j in range(1, i):
                rows[i][j] = rows[i - 1][j - 1] + rows[i - 1][j]
        return rows

複雜度
#

時間 O(n²),空間 O(n²)(輸出)。

要特別避免的錯誤
#

  • 第 i 列有 i + 1 個數,index 從 0 開始。

面試口說整理
#

每一列頭尾是 1,中間每一格是上一列左上和正上方的和,我先開好全部是 1 的列再填中間。時間 O(n²)。

相關文章

LeetCode 119: Pascal's Triangle II
·1 分鐘
LeetCode Easy Array Dynamic-Programming
LeetCode 119 解題筆記:只要第 rowIndex 列,用一維陣列從右往左更新,空間 O(k)
LeetCode 136: Single Number
·1 分鐘
LeetCode Easy Array Bit-Manipulation
LeetCode 136 解題筆記:x ^ x = 0、x ^ 0 = x,把所有數 XOR 起來,出現兩次的互相抵消,剩下的就是答案
LeetCode 108: Convert Sorted Array to Binary Search Tree
·1 分鐘
LeetCode Easy Array Divide-and-Conquer Tree Binary-Search-Tree
LeetCode 108 解題筆記:中間的元素當根,左右兩半遞迴;左右大小最多差 1,自然是平衡的
LeetCode 27: Remove Element
·1 分鐘
LeetCode Easy Array Two-Pointers
LeetCode 27 解題筆記:寫入指標只寫不等於 val 的數,最後回傳寫入的個數
LeetCode 35: Search Insert Position
·1 分鐘
LeetCode Easy Array Binary-Search
LeetCode 35 解題筆記:找第一個 >= target 的位置(lower bound);半開區間 [l, r) 要配 r = mid,不能寫 r = mid - 1
LeetCode 66: Plus One
·1 分鐘
LeetCode Easy Array Math
LeetCode 66 解題筆記:從最後一位往前加一,遇到 9 變 0 繼續進位,全部都是 9 時前面補 1