DeepSeek LeetCode 62. 不同路径 Python3实现
·
LeetCode 62. 不同路径的 Python3 实现如下,包含动态规划和组合数学两种解法。
解法一:动态规划(经典)
用 dp[i][j] 表示到达位置 (i, j) 的路径数。由于只能向右或向下,所以 dp[i][j] = dp[i-1][j] + dp[i][j-1]。第一行和第一列只有一种走法,初始化为 1。可优化为一维数组。
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
# dp[j] 表示当前行第 j 列的路径数
dp = [1] * n # 第一行全是 1
for i in range(1, m):
for j in range(1, n):
dp[j] += dp[j - 1]
return dp[-1]
· 时间复杂度:O(m × n)
· 空间复杂度:O(n)
解法二:组合数学(最优)
机器人总共需要走 m + n - 2 步,其中向下 m - 1 步,向右 n - 1 步。因此路径总数就是从 m + n - 2 步中选择 m - 1 步向下(或 n - 1 步向右)的组合数:
C(m + n - 2, m - 1)
import math
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
# 计算组合数 C(m+n-2, m-1)
return math.comb(m + n - 2, m - 1)
· 时间复杂度:O(min(m, n))(math.comb 内部高效实现)
· 空间复杂度:O(1)
选择 DP 解法易于理解,组合数学解法效率更高。实际面试中可根据需要展示。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)