题目链接

题目描述

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

示例

示例1:

输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

提示

  • 1 <= numRows <= 30

    思路

    数学

    根据杨辉三角的性质:

  • n 行第 m 个数的值为 0118-杨辉三角 - 图1

  • 某个数的值等于它两肩上的和,即0118-杨辉三角 - 图2

    另外

    测试样例的范围为[1, 30],因此可以直接打表(

    题解

    1. class Solution:
    2. def generate(self, numRows: int) -> List[List[int]]:
    3. ans = []
    4. for i in range(numRows):
    5. row = []
    6. for j in range(0, i+1):
    7. if j == 0 or j == i:
    8. row.append(1)
    9. else:
    10. row.append(ans[i-1][j-1]+ans[i-1][j])
    11. ans.append(row)
    12. return ans

    复杂度分析

  • 时间复杂度:0118-杨辉三角 - 图3

  • 空间复杂度:0118-杨辉三角 - 图4