【LeetCode】119. Pascal‘s Triangle II 解題報告(Python)

給定一個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。
在這裏插入圖片描述
在楊輝三角中,每個數是它左上方和右上方的數的和。

示例:
輸入: 3
輸出: [1,3,3,1]

解題思路1:
這個題與【LeetCode】118. Pascal‘s Triangle 解題報告(Python)一致,可以稍稍優化一下118的算法,每次保存上一行,根據上一行計算當前行即可

提交代碼1:(動態規劃,Runtime: 36 ms, faster than 89.08 % )

class Solution:
    def getRow(self, rowIndex: int) -> 'List[int]':
        rowIndex = rowIndex + 1
        if rowIndex == 0: return []
        if rowIndex == 1: return [1]
        if rowIndex == 2: return [1, 1]
        up = [1, 1]
        for i in range(2, rowIndex):
            t = [1]
            for j in range(1,i):
                t.append(up[j-1] + up[j])
            t.append(1)
            up = t
        return t

解題思路2:
這個題也可以一邊用當前行,一邊計算當前行,即:
res[i] += res[i+1] , 這是一種非常聰明的計算方法

提交代碼2:(動態規劃,Runtime: 28 ms, faster than 78.67 % )

class Solution:
    def getRow(self, rowIndex: int) -> 'List[int]':
        res = []
        for i in range(rowIndex + 1):
            res.insert(1, 1)
            for j in range(1, i):
                res[j] += res[j + 1]
        return res
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章