image.png
题目:给定一个非负整数numRows,生成Pascal三角形的第一个numRows。
解法:分两种情况讨论,第一种输入为0,那么返回的是空;第二种输入不为零,由题意可知,第i行则有i个非负整数。先对第一行的一个元素初始化,通过创建三个list来进行计算,第一个list1用来存放最终的结果,第二个list用来存放每一次的结果,第三个tmp用来存放上一次的结果,并且还要将tmp的头尾都加上0,方便对下一行计算。计算每一行的每个值的思想就是,list2的第i个元素=tmp的第i个元素+tmp的第i+1个元素。
class Solution(object):
def generate(self, numRows):
"""
:type numRows: int
:rtype: List[List[int]]
"""
list1=[]
#list2用来存放当前的列表
list2=[]
if numRows==0:
return []
else:
#先对第一行初始化。
list1.append([1])
#tmp用来存放临时的列表
tmp=[0,1,0]
n=2
while n-1<numRows:
for i in range(n):
list2.append(tmp[i]+tmp[i+1])
list1.append(list2)
tmp=[]
tmp.extend(list2)
tmp.insert(0,0)
tmp.append(0)
list2=[]
n=n+1
return list1