给定一个非负整数 numRows
,生成「杨辉三角」的前 numRows
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
例:
输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
解析:
大于等于2行以后,出去两边的值,中间的值等于前面一行对应两个值的和。
class Solution(object):
def generate(self, numRows):
"""
:type numRows: int
:rtype: List[List[int]]
"""
res = [] # 结果
for i in range(numRows):
now = [1]*(i+1) # 初始化每一行
if i >= 2: # 从第三行开始
for n in range(1, i): # 两边的值仍然为1
now[n] = pre[n-1]+pre[n]
res += [now] # 将结果存入
pre = now # 存储上一行的信息
return res # 返回结果