题目描述:
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
例子:
list = [
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
思路:
我们先建个 数组: 每行长度递增 , 每行的每个元素为1
list = [
[1],
[1,1],
[1,1,1],
[1,1,1,1],
[1,1,1,1,1]
]
再从第三行开始,跳过第一和最后一个元素,将中间的元素进行相关的计算,即上一行上一列的数加上上一行当前列的数即为得出相关位置的数值。
代码:
class Solution:
def generate(self, numRows: int):
mat = [[]]* numRows
for i in range(len(mat)):
mat[i] = [1] * (i+1)
for r in range(2,len(mat)): #r is row
for c in range(1,len(mat[r])-1):
mat[r][c] = mat[r-1][c-1] + mat[r-1][c]
return mat