最小路径和-力扣64-java 动态规划

这篇具有很好参考价值的文章主要介绍了最小路径和-力扣64-java 动态规划。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、题目描述

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

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

最小路径和-力扣64-java 动态规划

示例 1:

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]

输出:7

解释:因为路径 1→3→1→1→1 的总和最小。

示例 2:

输入:grid = [[1,2,3],[4,5,6]]

输出:12

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/minimum-path-sum

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、运行结果

最小路径和-力扣64-java 动态规划

三、解题思路

采用动态规划的思想,定义一个和原矩阵相同大小的动态矩阵dp,从最左上角到达矩阵中的任意一个位置:第一行的每个位置只能从左边一个位置到达,第一列的每个位置只能上一个位置到达,所以先初始化dp矩阵的第一行和第一列。

对于其他每个位置,可以从上一个位置向下走一步到达,也可以从左一个位置向右走一步到达,取决于从哪个方向走长度较短,所以状态转移方程为:

dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + grid[i][j]

按照这个方程填满dp中的每个格子,最终得到dp[row-1][col-1](最右下角的位置)的值就是最短路径的长度。文章来源地址https://www.toymoban.com/news/detail-408657.html

四、AC代码

class Solution {
    public int minPathSum(int[][] grid) {
        int row = grid.length;
        int col = grid[0].length;
        int[][] dp = new int[row][col];
        dp[0][0] = grid[0][0];   //初始化
        for(int i=1; i<row; i++)
            dp[i][0] = grid[i][0] + dp[i-1][0]; //初始化第一列(累加)
        for(int j=1; j<col; j++)
            dp[0][j] = grid[0][j] + dp[0][j-1];  //初始化第一行(累加)
        for(int i=1; i<row; i++){
            for(int j=1; j<col; j++){
                dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + grid[i][j]; //状态转移方程
            }
        }
        return dp[row-1][col-1];  //返回最右下角的元素
    }
}

到了这里,关于最小路径和-力扣64-java 动态规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 最小路径和——力扣64

    题目描述 动态规划

    2024年02月13日
    浏览(31)
  • 一维动态规划经典力扣题目(一)

    目录 题一:斐波那契数列 题目二:最低票价 题三:解码方法 递归方法是2的n次方的时间复杂度。 递归代码: 带有缓存的递归,会使时间复杂度得到大幅度优化。 时间复杂度为O(n)。 缓存即记录中间值         优化的方法:         代码:         代码:

    2024年02月21日
    浏览(31)
  • 动态规划|【路径问题】|931.下降路径最小和

    目录 题目 题目解析 思路 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 代码 931. 下降路径最小和 给你一个  n x n  的  方形  整数数组  matrix  ,请你找出并返回通过  matrix  的 下降路径   的   最小和  。 下降路径  可以从第一行中的任何元素开始,并从每一

    2024年04月13日
    浏览(35)
  • 【力扣】62. 不同路径 <动态规划>

    一个机器人位于一个 m m m x n n n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径? 示例 1: 输入:m = 3, n = 7 输出:28 示例 2: 输入:m

    2024年02月10日
    浏览(32)
  • 力扣62.不同路径(动态规划)

    2024年02月13日
    浏览(31)
  • 【学会动态规划】最小路径和(9)

    目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划! 题目链接:64. 最小路径和 - 力扣(Leet

    2024年02月16日
    浏览(24)
  • 【leetcode 力扣刷题】回文串相关题目(KMP、动态规划)

    题目链接:5. 最长回文子串 题目内容: 题目就是要我们找s中的回文子串,还要是最长的。其实想想,暴力求解也行……就是遍历所有的子串,同时判断是不是回文串,是的话再和记录的最大长度maxlen比较,如果更长就更新。时间复杂度直接变成O(n^3)。 优化的点在于,假设子

    2024年02月09日
    浏览(34)
  • 【学会动态规划】下降路径最小和(8)

    目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划! 题目链接:931. 下降路径最小和 - 力扣(

    2024年02月16日
    浏览(30)
  • 动态规划问题——矩阵的最小路径和

    题目: 给定一个矩阵m,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有路径中最小的路径和。 示例: 给定的m如下: 1        3         5        9 8        1        3        4  5        0        6 

    2023年04月08日
    浏览(39)
  • 力扣:63. 不同路径 II(动态规划)

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 网格中的障碍

    2024年01月18日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包