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)开始
相关推荐
失去的青春---夕阳下的奔跑10 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
m0_6294947311 小时前
LeetCode 热题 100-----25.回文链表
数据结构·算法·leetcode·链表
吃着火锅x唱着歌13 小时前
LeetCode 1019.链表中的下一个更大节点
算法·leetcode·链表
凌波粒14 小时前
LeetCode--404.左叶子之和(二叉树)
算法·leetcode·职场和发展
Project_Observer14 小时前
使用Zoho Projects AI自动项目管理
大数据·数据库·人工智能·深度学习·机器学习·深度优先
绝知此事14 小时前
【算法突围 03】核心算法思想:分治/递归/动态规划与 LeetCode 高频真题解析
算法·leetcode·面试·动态规划
阿Y加油吧15 小时前
两道字符串 DP 模板题复盘:最长公共子序列 & 编辑距离
leetcode
我爱cope16 小时前
【力扣hot100:76. 最小覆盖子串】
算法·leetcode·职场和发展
sheeta199816 小时前
LeetCode 每日一题笔记 日期:2026.05.20 题目:2657. 找到前缀公共数组
笔记·算法·leetcode
吃着火锅x唱着歌17 小时前
LeetCode 962.最大宽度坡
算法·leetcode·职场和发展