今天刷杨辉三角,大家有兴趣可以点上看看题目要求,试着做一下。
我们直接看题解吧:
在讲思路前,我们先了解一下杨辉三角:
第一行和其余每行的首尾位均为1,中间的数都是它左上方数与又上方数之和。
思路:
两层循环,第一层是记录行数,第二层记录没行列数,定义一个大列表和子列表,每行第一列或最后一列赋1,中间的则从左到右依次求和并添加(追加)到子列表中。最后合并子列表。
代码(Python3):
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
ret = list()
for i in range(numRows):
row = list()
for j in range(0, i + 1):
if j == 0 or j == i:
row.append(1)
else:
row.append(ret[i - 1][j] + ret[i - 1][j - 1])
ret.append(row)
return ret