Leetcode118.杨辉三角

118. 杨辉三角

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

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

img

示例 1:

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

示例 2:

1
2
>输入: numRows = 1
>输出: [[1]]

把杨辉三角的每一排左对齐:

$$ [1][1,1][1,2,1][1,3,3,1][1,4,6,4,1] $$

递推公式:

$$c[i][j]=c[i−1][j−1]+c[i−1][j]$$

1
2
3
4
5
6
7
8
class Solution(object):
def generate(self, numRows):
c = [[1] * (i + 1) for i in range(numRows)]
for i in range(2, numRows):
for j in range(1, i):
# 左上方的数 + 正上方的数
c[i][j] = c[i - 1][j - 1] + c[i - 1][j]
return c