题目
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3 输出: [1,3,3,1]
解题
方法一:取杨辉三角的最后一行(空间复杂度O(k*(k+1)/2))
生成杨辉三角,取最后一行
class Solution: def getRow(self, rowIndex: int) -> List[int]: ret = [] for i in range(rowIndex+1): row = [] for j in range(i+1): if j==0 or j==i: row.append(1) else: row.append(ret[i-1][j]+ret[i-1][j-1]) ret.append(row) return ret[-1]
方法二:直接生成该行(空间复杂度O(k))
class Solution(object): def getRow(self, rowIndex): """ :type rowIndex: int :rtype: List[int] """ res = [1] * (rowIndex + 1) for i in range(2, rowIndex + 1): for j in range(i - 1, 0, -1): res[j] += res[j - 1] return res