1. 程式人生 > 其它 >LeetCode118. 楊輝三角(Python)

LeetCode118. 楊輝三角(Python)

技術標籤:Arrayleetcode

1、題目描述

https://leetcode-cn.com/problems/pascals-triangle/

給定一個非負整數numRows,生成楊輝三角的numRows。在楊輝三角中,每個數是它左上方和右上方的數的和

輸入: 5
輸出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

2、程式碼詳解

當前一行只比上一行多了一個元素,最最關鍵的一點:本行元素等於上一行元素往後錯一位再逐個相加

只要對最後一行單獨處理:最後一行首、尾分別新增一個零然後對應位置求和就可以得到新的一行

https://www.runoob.com/python3/python3-func-zip.html

from typing import List
class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        if numRows == 0:
            return []
        res = [[1]]
        while len(res) < numRows:
            newRow = [a+b for a, b in zip([0]+res[-1], res[-1]+[0])]
            res.append(newRow)
        return res

numRows = 5
s = Solution()
print(s.generate(numRows))

https://leetcode-cn.com/problems/pascals-triangle/solution/qu-qiao-jie-fa-cuo-yi-wei-zai-zhu-ge-xiang-jia-28m/