给定一个非负整数numRows,生成Pascal三角形。
Input:4
Output:[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]]
Pascal triangle行和列都从0开始,比如6的位置是C(4,2)=4!/[2!(4-2)!]
C(n,k)=n*(n-1)*...*(n-k+1)/k!
Method.1 因为要用list输出,所以用yield存储每次的sublist,用zip[row,column]进行错位
class Solution:
def triangles(self):
subl=[1]
while True:
yield subl
subl=[sum(i) for i in zip([0]+subl,subl+[0])]
def generate1(self, numRows: int) -> List[List[int]]:
l=[]
n=0
if numRows==0:
return l[:]
for t in self.triangles():
l.append(t)
n+=1
if n==numRows:
bre