Given a non-negative integer numRows, generate the first numRows of Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it.
Example:
Input: 5
Output:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
<思路>就是按照上图的计算方式,从上往下一层一层计算。level存储每一层的数,output是最后输出的二维数组。
重点在于 level = [1] + [level[i]+level[i+1] for i in range(len(level)-1)] + [1]
等号左边的level是新的一层,右边的level指的是上一层。然后将上一层第0个数和第1个数相加,作为新一层的第1个数,依次循环。(第0个和最后一个永远都是[1])
class Solution(object):
def generate(self, numRows):
"""
:type numRows: int
:rtype: List[List[int]]
"""
if numRows == 0:
return []
level=[1]
output=[]
while numRows>0:
output.append(level)
level = [1] + [level[i]+level[i+1] for i in range(len(level)-1)] + [1]
numRows -= 1
return output