一. 0118题目
1. 题目
-
题目
-
示例
2. 方法一: 暴力法
-
解题思路
-
解题代码
def generate(self, numRows: int) -> List[List[int]]: arr = [[0 for _ in range(_ + 1)] for _ in range(numRows)] for i in range(numRows): for j in range(i + 1): if i == j or j == 0: arr[i][j] = 1 else: arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j] return arr
-
分析
时间复杂度: O(n^2)
空间复杂度: O(n^2)
二. 0119题目
1. 题目
- 题目
- 示例:
2. 方法一: 暴力法
-
解题思路
-
解题代码
def getRow(self, rowIndex: int) -> List[int]: arr = [[0 for _ in range(_ + 1)] for _ in range(rowIndex + 1)] for i in range(rowIndex + 1): for j in range(i + 1): if i == j or j == 0: arr[i][j] = 1 else: arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j] return arr[rowIndex]
-
分析:
时间复杂度: O(n^2)
空间复杂度: O(n^2)
3. 方法二: 递归法(超时)
-
解题思路
为了实现空间复杂度为O(k), 我首先想到的居然是使用递归的方法,
不出所料, 超时了. 还是附上自己敲的代码吧. -
解题代码
def getValue(self, row: int, col: int) -> int: if col == 0 or col == row: return 1 else: return self.getValue(row - 1, col - 1) + self.getValue(row - 1, col) def getRow(self, rowIndex: int) -> List[int]: result = [] for index in range(rowIndex): result.append(self.getValue(rowIndex, index)) return result
-
分析
4. 方法三: 动态规划
-
解题思路
-
解题代码
def getRow(self, rowIndex: int) -> List[int]: result = [1 for _ in range(rowIndex + 1)] for i in range(rowIndex + 1): for j in range(1, i): index = i - j result[index] += result[index - 1] return result
-
分析
时间复杂度: O(n^2)
空间复杂度: O(n)