给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
- 时间复杂度:$O(n^2)$
- 空间复杂度:$O(1),不考虑返回值的空间占用时$
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
res = []
for i in range(numRows):
if i == 0:
res.append([1])
else:
tmp = []
for j in range(i+1):
if j == 0 or j > len(res[i-1]) - 1:
tmp.append(1)
else:
tmp.append(res[i-1][j-1] +res[i-1][j])
res.append(tmp)
return res