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.
Input: 5 Output: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
这道题有个误区,就是输出的格式不用有给的那种有空格
清楚的记得这个题是初二课本上的杨辉三角。他的公式是,i表示行数,j表示列数。虽然很通用,但是效率不高。
这个效率比较高
class Solution(object):
def generate(self, numRows):
"""
:type numRows: int
:rtype: List[List[int]]
"""
ret=[]
for i in range(numRows):
ret.append([1])
for j in range(1,i+1):
if(i==j):
ret[i].append(1)
else:
ret[i].append(ret[i-1][j]+ret[i-1][j-1])
return ret
把整个输出看成一个矩阵,每一行的开始都是1( ret.append([1])),对角线上的元素是也是1(if(i==j):ret[i].append(1)),其他的值就是上面两个元素相加