题目描述
给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例
示例 1:
输入: rowIndex = 3
输出: [1,3,3,1]
示例 2:
输入: rowIndex = 0
输出: [1]
示例 3:
输入: rowIndex = 1
输出: [1,1]
提示:
0 <= rowIndex <= 33
解题思路
1. 递推解法(空间复杂度 O(k²))
- 创建二维数组存储所有行
- 每个位置的值是上一行相邻两个数的和
- 边界位置都是1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
class Solution:
def getRow(self, rowIndex: int) -> List[int]:
C = [[1] * (i + 1) for i in range(rowIndex + 1)]
for i in range(0, rowIndex + 1):
for j in range(1, i):
C[i][j] = C[i - 1][j - 1] + C[i - 1][j]
return C[rowIndex]
class Solution:
def getRow(self, rowIndex: int) -> List[int]:
cur,pre = [],[]
for i in range(rowIndex + 1):
cur = [1] * (i + 1)
for j in range(1,i):
cur[j] = pre[j - 1] + pre[j]
pre = cur
return pre
|