心路历程:
其实最直观的想法是可以直接按照从上到下的顺序遍历数组,依次计算数组的值即可,相当于DP表格的初始化。
但是也可以从递归的角度进行思考,@cache yyds。
注意的点:
1、注意第二层循环col应该是[0, line+1)
解法:动态规划
python
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
@cache
def dp(i, j): # 返回第i行,第j个元素的值
if i == 0: return 1
if j == 0 or j == i: return 1
return dp(i-1, j-1) + dp(i-1, j)
res = []
for line in range(numRows):
temp = []
for col in range(line+1): # 第二层循环注意别写错了
temp.append(dp(line, col))
res.append(temp)
return res