给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
解题思路:
可以看出来每一行除了开始和结尾的1,其他位置元素都与上一行有关,那这就让我想到了动态规划
这一行的值=上一行的上一列+上一行的这一列元素,即dp[i][j] = dp[i-1][j-1] + dp[i-1][j]
提交代码:(动态规划,Runtime: 40 ms, faster than 65.14 % )
class Solution:
def generate(self, numRows: int) -> 'List[List[int]]':
if numRows == 0: return []
if numRows == 1: return [[1]]
dp = [[1],[1,1]]
for i in range(2, numRows):
t = [1]
for j in range(1,i):
t.append(dp[i-1][j-1] + dp[i-1][j])
t.append(1)
dp.append(list(t))
return dp