力扣刷题(第二十六天)
灵感来源
- 保持更新,努力学习
- python脚本学习
杨辉三角
解题思路
- 初始化结果列表:如果输入的行数为 0,直接返回空列表;否则,初始化结果列表并添加第一行 [1]。
- 逐行构建:从第二行开始,每行的第一个和最后一个元素为 1,中间元素通过上一行的相邻元素相加得到。
- 计算中间元素:对于每一行的中间元素,使用上一行的相邻元素之和来计算。
class Solution:def generate(self, numRows: int) -> list[list[int]]:if numRows == 0:return []triangle = [[1]]for i in range(1, numRows):prev_row = triangle[-1]new_row = [1]for j in range(1, i):new_row.append(prev_row[j-1] + prev_row[j])new_row.append(1)triangle.append(new_row)return triangle
逐行解释
class Solution:def generate(self, numRows: int) -> list[list[int]]:# 如果输入的行数为0,直接返回空列表if numRows == 0:return []# 初始化结果列表,第一行固定为[1]triangle = [[1]]# 从第二行开始构建杨辉三角(索引从1开始)for i in range(1, numRows):# 获取上一行,用于计算当前行的元素prev_row = triangle[-1]# 初始化当前行,第一个元素始终为1new_row = [1]# 计算当前行的中间元素(从索引1到i-1)# 每个中间元素等于上一行相邻两个元素的和for j in range(1, i):new_row.append(prev_row[j-1] + prev_row[j])# 当前行的最后一个元素始终为1new_row.append(1)# 将当前行添加到结果列表中triangle.append(new_row)# 返回完整的杨辉三角return triangle