LeetCode 64. 最小路径和(Minimum Path Sum) 20
发布日期:2025-04-04 23:51:46 浏览次数:10 分类:精选文章

本文共 1547 字,大约阅读时间需要 5 分钟。

要在一个m x n网格中找到从左上角到右下角的最小路径和,每次只能向右或向下移动。这个问题可以通过动态规划来解决。动态规划的方法可以在线性时间内计算出最优路径和,适用于各种网格大小。

步骤解释

  • 初始化动态规划表

    • 创建一个大小为m x n的二维数组dp,其中dp[i][j]表示到达位置(i,j)的最小路径和。
  • 填充动态规划表

    • 边界条件
      • 对于第1行(i=0),每个位置只能从左边的位置过来,故`dp[0][j] = grid[0][j] + dp[0][j-1](j>0)。
      • 对于第1列(j=0),每个位置只能从上边的位置过来,故`dp[i][0] = grid[i][0] + dp[i-1][0](i>0)。
    • 其他位置
      • 对于每个位置(i,j),计算来自左边(i,j-1)和上边(i-1,j)的最小值,加上当前位置的值,即`dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]。
  • 返回最终结果

    • dp[m-1][n-1]即为从左上角到右下角的最小路径和。
  • 代码实现

    以下是Java代码实现示例:

    public class MinimumPathSum {    public int minPathSum(int[][] grid) {        int m = grid.length;        if (m == 0) return 0;        int n = grid[0].length;        if (n == 0) return 0;                int[][] dp = new int[m][n];        dp[0][0] = grid[0][0];                // 填充第一行        for (int j = 1; j < n; j++) {            dp[0][j] = dp[0][j-1] + grid[0][j];        }                // 填充第一列        for (int i = 1; i < m; i++) {            dp[i][0] = dp[i-1][0] + grid[i][0];        }                // 填充其他位置        for (int i = 1; i < m; i++) {            for (int j = 1; j < n; j++) {                dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + grid[i][j];            }        }                return dp[m-1][n-1];    }}

    示例解释

    考虑输入网格:

    1 3 11 5 14 2 1

    动态规划表格填充过程

    • dp[0][0] = 1
    • 第一行:dp[0] = [1, 4, 5]
    • 第一列:dp[:,0] = [1, 2, 8]
    • 填充其他位置:
      • dp[1][1] = min(2, 4) + 5 = 2 + 5 = 7
      • dp[1][2] = min(7, 5) + 1 = 5 + 1 = 6
      • dp[2][1] = min(8, 7) + 2 = 7 + 2 = 9
      • dp[2][2] = min(9, 6) + 1 = 6 + 1 = 7

    最终输出:7,与示例结果一致。

    总结

    通过动态规划,我们能够有效地找到网格中的最小路径和,该方法在O(mn)的时间复杂度下完成计算,适用于各种大小的网格问题。

    上一篇:leetcode 645. Set Mismatch——凡是要节约空间的题目 都在输入数据上下功夫 不要担心破坏原始的input...
    下一篇:LeetCode 628. 三个数的最大乘积 java版

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月18日 09时32分52秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章

    100个电脑常用组合键大全(非常详细)零基础入门到精通,收藏这篇就够了 2025-03-29
    10个程序员可以接私活的平台 2025-03-29
    10个运维拿来就用的 Shell 脚本,用了才知道有多爽,零基础入门到精通,收藏这一篇就够了 2025-03-29
    10条sql语句优化的建议 2025-03-29
    10款最佳免费WiFi黑客工具(附传送门)零基础入门到精通,收藏这一篇就够了 2025-03-29
    15个备受欢迎的嵌入式GUI库,从零基础到精通,收藏这篇就够了! 2025-03-29
    15个程序员常逛的宝藏网站!!从零基础到精通,收藏这篇就够了! 2025-03-29
    2023应届毕业生找不到工作很焦虑怎么办? 2025-03-29
    2023最新版Node.js下载安装及环境配置教程(非常详细)从零基础入门到精通,看完这一篇就够了 2025-03-29
    2024 年需要了解的顶级大数据工具(非常详细)零基础入门到精通,收藏这一篇就够了 2025-03-29
    2024 最新 Kali Linux 定制化魔改,完整版,添加常见60渗透工具,零基础入门到精通,收藏这篇就够了 2025-03-29
    2024大模型行业应用十大典范案例集(非常详细)零基础入门到精通,收藏这一篇就够了 2025-03-29
    2024年全球顶尖杀毒软件,从零基础到精通,收藏这篇就够了! 2025-03-29
    2024年度“金智奖”揭晓:绿盟科技获双项大奖,创新驱动网络安全新高度。从零基础到精通,收藏这篇就够了! 2025-03-29
    2024年最流行的十大开源渗透测试工具 2025-03-29
    2024年网络安全八大前沿趋势,零基础入门到精通,收藏这篇就够了 2025-03-29
    2024年薪酬最高的五个网络安全职位,零基础入门到精通,收藏这一篇就够 2025-03-29
    2024年非科班的人合适转行做程序员吗? 2025-03-29
    2024数字安全创新性案例报告,从零基础到精通,收藏这篇就够了! 2025-03-29
    2024最新最全CTF入门指南(非常详细)零基础入门到精通,收藏这一篇就够了 2025-03-29