119.杨辉三角 II
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 O(k) 空间复杂度
在杨辉三角中,每个数是它左上方和右上方的数的和。
输入: 3
输出: [1,3,3,1]
class Solution:
def getRow(self, rowIndex: int) -> List[int]:
if rowIndex == 0:
return [1]
prev = self.getRow(rowIndex - 1)
last = [sum(prev[j - 1:j + 1]) for j in range(1, rowIndex)]
return [1, *last, 1]
# 同118
def getRow(self, rowIndex: int) -> List[int]:
row = [1]
for _ in range(rowIndex):
row = [x + y for x, y in zip([0]+row, row+[0])]
return row
"""
j行的数据, 应该由j - 1行的数据计算出来
当前一行比上一行多一个元素,最最关键的:本行元素=上一行元素往后错一位再逐个相加
假设j - 1行为[1,3,3,1], 那么前面插入一个0(j行的数据会比j-1行多一个),
然后执行相加[0+1,1+3,3+3,3+1,1+0] = [1,4,6,4,1], 最后一个1保留即可.
"""