给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
第一次的代码:
首先建立全1的三角,然后再从第三排开始遍历计算
m=[]
for i in range(1,numRows+1):#建立三角
c=[1]*i
m.append(c)
ind=2#需要修改的行位置
while ind<numRows:#计算重新赋值
i=0
j=1
while j<=ind-1:
m[ind][j]=m[ind-1][i]+m[ind-1][j]
i+=1
j+=1
ind+=1
return m
20ms,排名91%
第二次代码:
递归
def m(c):
if len(c)==numRows:
return [c]
else:
i=0
j=1
s=[1]
while j<len(c):
s+=[c[i]+c[j]]
i+=1
j+=1
s+=[1]#建立新的层
return [c]+m(s)
if numRows==0:return []
return m([1])
36ms,排名15%