目录
一、递推关系
参考文献:https://leetcode-cn.com/explore/orignial/card/recursion-i/257/recurrence-relation/1208/
二、杨辉三角
2.1 问题描述
2.2 求解过程
个人实现
法一:暴力迭代 + 动态规划。正常地生成各行以及行中各元素。复杂度 O(n^2)。
2020/06/18 - 9.06%
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
if not numRows:
return []
if numRows == 1:
return [[1]]
if numRows == 2:
return [[1],[1,1]]
res = [[1],[1,1]] # 初始化结果列表
for line in range(2, numRows): # 当前行行号
temp = [1] # 初始化当前行头
for j in range(1, line): # 当前行需计算的中间元素数
num = res[line-1][j-1] + res[line-1][j] # 求和生成中间元素
temp.append(num) # 中间元素加入临时列表
temp.append(1) # 补充当前行尾
res.append(temp) # 当前行加入结果列表
return res
法一改:暴力迭代 + 动态规划 改。稍作简化,思想不变。复杂度 O(n^2)。
2020/06/18 - 65.52%
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
if not numRows:
return []
if numRows == 1:
return [[1]]
res = [[1]] # 初始化结果列表 res 第0行
for line in range(numRows-1): # 上一行 line 行号
cur = [1] # 当前行 cur 行头取1
for index in range(line): # 当前行 cur 需计算的中间元素数
cur.append(res[line][index] + res[line][index+1]) # 求和生成中间元素加入当前行 cur
cur.append(1) # 当前行 cur 行尾取1
res.append(c