题目
难度:★☆☆☆☆
类型:数组
给定一个非负整数 numRows,生成杨辉三角的前 *numRows *行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
解答
这道题很简单,通过简单的循环嵌套即可实现,这里需要注意的是初始化过程。
class Solution:
def generate(self, numRows):
if numRows == 0: # 输入为0,输出[]
return []
if numRows == 1: # 输入为1,输出第一层
return [[1]]
if numRows == 2: # 输入为2,输出前两层
return [[1], [1, 1]]
res, prev_layer = [[1], [1, 1]], [1, 1] # 初始化结果变量和上一层结果
for r in range(2, numRows):
cur_layer = [] # 初始化
for i in range(0, len(prev_layer)-1):
cur_layer.append(prev_layer[i]+prev_layer[i+1]) # 当前层结果
cur_layer = [1] + cur_layer + [1] # 左右两边添加1
res.append(cur_layer) # 添加当前层结果
prev_layer = cur_layer # 更新前一层结果为当前层结果
return res
如有疑问或建议,欢迎评论区留言~