思路:
使用了动态规划,对非第一排、第一列的点,它们的路径数量为上面位置数量+下面位置数量,循环计算每个点的路径数量
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
dp = [[1] * n] + [[1]+[0] * (n - 1)] * (m - 1)
for i in range(1,m):
for j in range(1,n):
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
return dp[m - 1][n - 1]
空间复杂度上更加优化:
通过 point[j] += point[j - 1],实现将上方和左方的值加起来
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
point = [1] * n
for i in range(1, m):
for j in range(1, n):
point[j] += point[j - 1]
return point[-1]```