118.杨辉三角I
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
# 动态规划 O(N^2)
triangle = []
for row_num in range(numRows):
row = [None for _ in range(row_num + 1)]
row[0], row[-1] = 1, 1
for j in range(1, len(row) - 1):
row[j] = triangle[row_num - 1][j - 1] + triangle[row_num - 1][j]
triangle.append(row)
return triangle
119.杨辉三角II
class Solution:
def getRow(self, rowIndex: int) -> List[int]:
# 动态规划 O(N^2)
# triangle = []
# for i in range(rowIndex + 1):
# row = [None for _ in range(i + 1)]
# row[0], row[-1] = 1, 1
#
# for j in range(1, i):
# row[j] = triangle[i - 1][j-1] + triangle[i - 1][j]
# triangle.append(row)
# return triangle[-1]
# 动态规划 空间复杂度O(k)
row = [1 for _ in range(rowIndex + 1)]
for i in range(rowIndex + 1):
for j in range(i - 1, 0, -1):
row[j] = row[j] + row[j - 1]
return row