118. 杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]
]
代码:
class Solution:def generate(self, numRows):""":type numRows: int:rtype: List[List[int]]"""if not numRows:return []if numRows == 1:return [[1]]if numRows == 2: return [[1],[1,1]]res = [[1],[1,1]]if numRows > 2:for i in range(2,numRows):cr = [1,1]for j in range(1,i):cr.insert(j,res[i-1][j-1]+res[i-1][j])res.append(cr)return res
大神给出的优化后的代码:
class Solution:def generate(self, numRows):""":type numRows: int:rtype: List[List[int]]"""result = []for i in range(numRows):now = [1]*(i+1)if i >= 2:for n in range(1,i):now[n] = pre[n-1]+pre[n]result += [now]pre = nowreturn result