解答
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
if numRows == 1:
return [[1]]
if numRows == 0:
return []
# 得到一个嵌套列表[[0], [0,0], [0,0,0]...]
dp = [([0] * (i + 1)) for i in range(numRows)]
dp[0][0] = 1
dp[1][0] = 1
dp[1][1] = 1
for i in range(2, numRows):
dp[i][0] = 1
dp[i][-1] = 1
for j in range(1, len(dp[i])-1):
dp[i][j] = dp[i-1][j-1] + dp[i-1][j]
return dp
2.错位相加
def generate(numRows):
if numRows == 0:
return []
res = [[1]]
while len(res) < numRows:
# 两列表对应位置的值相加用zip
last_row = [a+b for a,b in zip([0] + res[-1], res[-1] + [0])]
res.append(last_row)
return res