首页 > 其他分享 >最小路径和

最小路径和

时间:2022-10-30 02:33:29浏览次数:76  
标签:tmp arr int 路径 最小 ++ grid dp

题目描述:

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

 

 

 

 

    
    /**
     * 解题思路:
     *      第一步:确定dp数组,本题定义一个二维dp数组,那么dp[i][j]表示为在(i,j)位置,由(0,0) --> (i,j)最短路径
     *      第二步:确定递推公式,根据题意可知,dp[i][j] = Math.min(dp[i-1][j],dp[i][j-1]) + grid[i][j]
     *      第三步:初始化。我们一般都是初始化第一行和第一列,那么dp[0][i] = grid[0][i] + dp[0][i-1],dp[j][0] = dp[j - 1][0] + grid[j][0]
     *      如果想不明白,那么你可以这样想,输入的数组是一个1 * n或者 n * 1,我想这样你就会明白初始化
     *      第四步:遍历顺序,就是正常遍历
     *      第五步:返回右下角即可
     * @param grid
     * @return
     */
    public static int minPathSum(int[][] grid) {
        int a = grid.length;
        int b = grid[0].length;
        int[][] arr = new int[a][b];
        int tmp = 0;
        for(int i = 0;i < b;i++){
            arr[0][i] = grid[0][i] + tmp;
            tmp = arr[0][i];
        }
        tmp = 0;
        for(int i = 0;i < a;i++){
            arr[i][0] = grid[i][0] + tmp;
            tmp = arr[i][0];
        }
        for(int i = 1;i < a;i++){
            for(int j = 1;j < b;j++){
                arr[i][j] = Math.min(arr[i][j-1],arr[i-1][j]) + grid[i][j];
            }
        }
        return arr[a-1][b-1];
    }

 

标签:tmp,arr,int,路径,最小,++,grid,dp
From: https://www.cnblogs.com/du001011/p/16840388.html

相关文章

  • Java如何获取当前的jar包路径以及如何读取jar包中的资源
    如何加载jar包中的资源。1.比如说我要得到背景图片,源代码中它是/src/UI/image/background.jpg那么在jar包中它的路径应该是/UI/image/background.jpg路径最前面的/......
  • 907. 子数组的最小值之和 : 常规「单调栈 + 数学」运用题
    题目描述这是LeetCode上的​​908.最小差值I​​,难度为中等。Tag:「数学」、「单调栈」给定一个整数数组​​arr​​​,找到​​min(b)​​​ 的总和,其中​​b......
  • win10启用长路径
    方法一:操作组策略Win+R输入 gpedit.msc依次点击【计算机配置】->【管理模板】->【系统】->【文件系统】,找到“启用win32长路径”并双击打开选择“启用”选项,然后单击......
  • 计算包含三角形的最小圆,针对锐角三角形就是外接圆
    最近遇到一个需求,画一个轮廓,然后外面画一个圆,圆外面再画个箭头表示方向,不能互相遮挡,所以轮廓要完全在圆内。涉及一个子问题,先调研了一下:计算包含三角形的最小圆。后续根据......
  • #yyds干货盘点# LeetCode 腾讯精选练习 50 题:不同路径
    题目:一个机器人位于一个mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finis......
  • 【线性代数】 抽丝剥茧系列之从投影的角度理解最小二乘
    承接上文【线性代数】抽丝剥茧系列之矩阵投影,本篇利用投影矩阵的原理实现最小二乘现在要求根据三个点(1,1)、(2,2)、(3,2)拟合出一条直线,根据待定系数设满足条件的直线......
  • @RestController 指定主路径无效踩坑
    指定路径时写成了@RestController("user"),测试接口的时候发现无效.查看源码关于value的说明:这仅仅是建议值,实际应该使用@RequestMapping("/user")指定.......
  • 最小花费爬楼梯 -- 动态规划
    方法一递归 importjava.util.*;publicclassSolution{/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可**......
  • 基于python指定包的安装路径方法(linux)
    通常python安装包都会被默认装在/usr/local/pythonx/lib/site-packages(linux),但是我们有时想自定义包的安装路径,比如自己项目的某个路径,这样在部署的时候就不用再安装了,大......
  • 局部最小问题
    packageclass01;/***局部最小问题*<p>*对于一个数组,使用二分法的前提,一定是这个数组整体有序吗?*答:不是。局部最小问题就是反例。*/publicclassCode07......