- 题目描述
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
- 示例
输入: 3 输出: [1,3,3,1]
- 解决思路
跟上一题,也就是杨辉三角的区别在于这一次只要求输出最后一行,因此我还是用上一题的思路,只是在输出时变化了一下。另外是发现如果不把第二行的[1,1]放入循环中算法的话,算法的效率好像一下子快了非常多,但是按理说不应该出现这种情况啊,因为range的范围从2开始和从3开始,也只差了一次迭代,怎么会有那么大的差异。没想明白。
另外是看评论才知道这个题的坑是有第0行的存在。
- 代码
class Solution(object):
def getRow(self, rowIndex):
"""
:type rowIndex: int
:rtype: List[int]
"""
if rowIndex == 0:
return [1]
if rowIndex == 1:
return [1,1]
pre = [1,1]
#不需要返回之前的行,那就不需要保存之前的行
#result = [[1],[1,1]]
for i in range(2,rowIndex+1):
now = [1] *(i+1)
for j in range(1,i):
now[j] = pre[j-1] + pre[j]
#result += [now]
pre = now
return now