leetcode hot100 64. 最小路径和 medium 递归优化


dfs(i, j) = 从 (0,0) 走到 (i,j) 的最小路径和

到 (i, j) 只能 :向下 or 向右

clike 复制代码
dfs(i, j) = min(
							dfs(i + 1, j),    // 向下
							dfs(i, j + 1)     // 向右
							) + grid[i][j]

时间复杂度:O(m × n)

空间复杂度:O(m × n)

clike 复制代码
class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:

        # 时间复杂度:O(m × n), 空间复杂度:O(m × n)
        m = len(grid)
        n = len(grid[0])

        @cache
        def dfs(i, j):  # 当前位置(i, j)

            # 到达终点右下角
            if i == m - 1 and j == n - 1:
                return grid[i][j]

            # 越界
            if i >= m or j >= n:
                return float('inf')

            # 向下 or 向右
            return grid[i][j] + min(
                dfs(i + 1, j),   # 向下
                dfs(i, j + 1)    # 向右
            )

        return dfs(0, 0)   # 当前位置(i, j)从(0,0)开始
相关推荐
样例过了就是过了3 小时前
LeetCode热题100 最长有效括号
c++·算法·leetcode·动态规划
水蓝烟雨4 小时前
3335. 字符串转换后的长度 I
算法·leetcode
westdata-Tm4 小时前
洛谷P1219 [USACO1.5] 八皇后 Checker Challenge
算法·深度优先·dfs
小雅痞4 小时前
[Java][Leetcode middle] 15. 三数之和
java·算法·leetcode
Navigator_Z4 小时前
LeetCode //C - 1030. Matrix Cells in Distance Order
c语言·算法·leetcode
无敌昊哥战神4 小时前
【回溯算法巅峰之作】LeetCode 51. N皇后问题详解与常见避坑指南 (C/C++/Python)
c语言·算法·leetcode
leoufung5 小时前
LeetCode 135. Candy:从直觉到最优解的完整推导
算法·leetcode·职场和发展
葳_人生_蕤6 小时前
hot100——回溯和DFS、BFS
算法·深度优先
alphaTao6 小时前
LeetCode 每日一题 2026/4/27-2026/5/3
算法·leetcode