给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

示例

输入: numRows = 5

输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

解析

观察一下,发现当前一行只比上一行多了一个元素,而且本行元素等于上一行元素往后错一位再逐个相加。

代码示例

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        lst = [[1]]
        for i in range(numRows-1):
            prev = lst[-1]
            lst.append([m+n for m,n in zip([0]+prev, prev+[0])])
        return lst

执行用时:32 ms, 在所有 Python3 提交中击败了 88.78% 的用户.

本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/377