题目描述:
解题思路:
简单模拟
当行数为1时,返回[[1]];当行数为2时,返回[[1], [1, 1]];
当行数为3及以上时,利用杨辉三角的特性,当前行的第一个元素和最后一个元素都为1,中间元素的值=上一层列数和当前层列数一致的位置对应的元素值+上一层列数比当前层列数少1位置对应的值
。
核心:从第三层开始,借助上一层元素值,逐层计算对应中间位置的值,第一个元素和最后一个元素直接置为1即可。
代码:
class Solution:
def generate(self, numRows):
# numRows为1时
if numRows == 1:
return [[1]]
elif numRows == 2:
return [[1], [1, 1]]
else:
res = [[1], [1, 1]]
i = 2
inner = []
count = 3
while(i < numRows):
# 每次重置j
j = 1
# 一行的第一个元素
inner.append(1)
# 从第三层开始
while(j < count-1):
inner.append(res[i-1][j-1] + res[i-1][j])
j += 1
# 一行的最后一个元素
inner.append(1)
res.append(inner)
inner = []
count += 1
i += 1
return res