2025年--Lc186--64. 最小路径和(多维动态规划,矩阵)--Java版

1.题目


2.思路

(1)dpij的定义:从起点(0,0)到位置(i,j)的最小路径和

(2)dpij的递推公式:对于位置(i,j)只能从(i-1,j)或(i,j-1)走过来。所以dpi,j=gridij+Math.min(dpi-1j,dpij-1).

gridij是消耗当前格子的值,Math.min(dpi-1j,dpij-1)是从上走或从左走的路径最小值。

(3)初始化:

起点到起点的路径和(即当前格子)dp00=grid00

第一行(从左走来)

dp0j=dp0j-1+grid0j

第一列(从上走来)

dpi0=dpi-10+gridi0

(4)遍历顺序:从上到下,从左到右

3.代码实现

java 复制代码
class Solution {
    public int minPathSum(int[][] grid) {
        //行数
        int m=grid.length;
        //列数
        int n=grid[0].length;
        //边界情况,只有一行或者只有一列,这样就无法从左上角走到右下角,所以最小路径和为0
        if(m==0||n==0)
        {return 0;}
         //定义dp数组
        int[][] dp=new int[m][n];
        dp[0][0]=grid[0][0];
        //初始化第一列
        for(int i=1;i<m;i++)
        {//因为是求最小路径和,当前元素的值,等于他左边元素加上当前元素的值
            dp[i][0]=dp[i-1][0]+grid[i][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++)
        {
            for(int j=1;j<n;j++)
            {
                dp[i][j]=grid[i][j]+Math.min(dp[i-1][j],dp[i][j-1]);
            }
        }
        return dp[m-1][n-1];
    }
}```
相关推荐
geovindu10 分钟前
java: Facade Pattern
java·开发语言·后端·外观模式·结构型模式
listening77711 分钟前
HarmonyOS 6.1 元服务深度优化:从“秒开”到“常驻”的极致体验
java·开发语言·spring
AC赳赳老秦30 分钟前
司法公开数据采集应用:OpenClaw 抓取裁判文书公开信息,批量整理同类参考案例
java·大数据·python·数据挖掘·数据分析·php·openclaw
笑小枫36 分钟前
用 Claude Code 推翻重写笑小枫网站
java·人工智能·spring boot·ai编程
yurenshi166844 分钟前
自媒体矩阵防封号工具测评:聚媒通 IP 隔离版对比融媒宝、新榜两款工具优劣
tcp/ip·矩阵·媒体
霸道流氓气质1 小时前
ApiPost 中配置自动获取 Token 并调用业务接口完整指南
java·服务器·数据库
独隅1 小时前
IntelliJ IDEA 接入多种AI大模型插件终极指南(2026.1 企业合规版)
java·人工智能·intellij-idea
还是奇怪2 小时前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
zfoo-framework2 小时前
1.ansible安装 2.虚拟机克隆
java
码上解惑2 小时前
从 Dify 工作流说起:常用节点怎么选、怎样组合?
java·人工智能·ai·agent·dify·智能体·spring ai