2057 字
约 6 分钟
11
064.最小路径和
无标签

064.最小路径和

作者:沉默王二
发布时间:2022-11-29T10:23:22.470+0800


本题解同时收录在星球专栏《二哥的 LeetCode 刷题笔记》中,专栏托管在语雀平台上(更方便你沉浸式阅读和做笔记,数学表达公式也能显示出来),访问地址和密码:https://t.zsxq.com/6iuzn6I

064.最小路径和

题意

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

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

难度

中等

示例

示例1:

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

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

示例 2:

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

分析

本题还是可以用 动态规划 来解决,因为这题和前面两题—— 062.不同路径 、063.不同路径 II 有一个共同之处,每个位置都只能由它的上方或者是左边转移而来。

同样,我们还是利用f[i][j]来表示走到第i行第j列最少的数字总和。

基于这样子的思想我们可以写出如下的动态转移方程:

依照该动态转移方程,我们可以写出如下的代码。

class Solution {

        for(int i = 0;i < grid.length;i++) {            for (int j = 0; j < grid[0].length; j++) {                if (i == 0 && j == 0) {continue;}                if (i == 0) {grid[i][j] += grid[i][j - 1];}                else if (j == 0) {grid[i][j] += grid[i - 1][j];}                else {grid[i][j] += Math.min(grid[i][j - 1], grid[i - 1][j]);}            }        }        return grid[grid.length - 1][grid[0].length - 1];    }}

代码中直接利用了grid[][]来替代f[][],来节省空间。

最终的时间复杂度为,空间复杂度也为。

总结

这类在网格图上行走,并且要求最小值/最大值的题目,通常可以利用 动态规划 来解决,我们首先将该题的 状态(本题中即网格图的位置) 提取出来,再观察这个状态是由那些状态转移而来的,是怎么转移的,从而总结出动态转移方程,最后便可以写出代码了。

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

一步一个脚印

不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。

PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。

一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 1000 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!

本题解同时收录在星球专栏《二哥的 LeetCode 刷题笔记》中,专栏托管在语雀平台上(更方便你沉浸式阅读和做笔记,数学表达公式也能显示出来),访问地址和密码:https://t.zsxq.com/6iuzn6I

064.最小路径和

题意

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

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

难度

中等

示例

示例1:

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

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

示例 2:

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

分析

本题还是可以用 动态规划 来解决,因为这题和前面两题—— 062.不同路径 、063.不同路径 II 有一个共同之处,每个位置都只能由它的上方或者是左边转移而来。

同样,我们还是利用f[i][j]来表示走到第i行第j列最少的数字总和。

基于这样子的思想我们可以写出如下的动态转移方程:

依照该动态转移方程,我们可以写出如下的代码。

class Solution {

        for(int i = 0;i < grid.length;i++) {            for (int j = 0; j < grid[0].length; j++) {                if (i == 0 && j == 0) {continue;}                if (i == 0) {grid[i][j] += grid[i][j - 1];}                else if (j == 0) {grid[i][j] += grid[i - 1][j];}                else {grid[i][j] += Math.min(grid[i][j - 1], grid[i - 1][j]);}            }        }        return grid[grid.length - 1][grid[0].length - 1];    }}

代码中直接利用了grid[][]来替代f[][],来节省空间。

最终的时间复杂度为,空间复杂度也为。

总结

这类在网格图上行走,并且要求最小值/最大值的题目,通常可以利用 动态规划 来解决,我们首先将该题的 状态(本题中即网格图的位置) 提取出来,再观察这个状态是由那些状态转移而来的,是怎么转移的,从而总结出动态转移方程,最后便可以写出代码了。

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

一步一个脚印

不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。

PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。

一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 1000 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!

本题解同时收录在星球专栏《二哥的 LeetCode 刷题笔记》中,专栏托管在语雀平台上(更方便你沉浸式阅读和做笔记,数学表达公式也能显示出来),访问地址和密码:https://t.zsxq.com/6iuzn6I

064.最小路径和

题意

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

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

难度

中等

示例

示例1:

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

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

示例 2:

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

分析

本题还是可以用 动态规划 来解决,因为这题和前面两题—— 062.不同路径 、063.不同路径 II 有一个共同之处,每个位置都只能由它的上方或者是左边转移而来。

同样,我们还是利用f[i][j]来表示走到第i行第j列最少的数字总和。

基于这样子的思想我们可以写出如下的动态转移方程:

依照该动态转移方程,我们可以写出如下的代码。

class Solution {

        for(int i = 0;i < grid.length;i++) {            for (int j = 0; j < grid[0].length; j++) {                if (i == 0 && j == 0) {continue;}                if (i == 0) {grid[i][j] += grid[i][j - 1];}                else if (j == 0) {grid[i][j] += grid[i - 1][j];}                else {grid[i][j] += Math.min(grid[i][j - 1], grid[i - 1][j]);}            }        }        return grid[grid.length - 1][grid[0].length - 1];    }}

代码中直接利用了grid[][]来替代f[][],来节省空间。

最终的时间复杂度为,空间复杂度也为。

总结

这类在网格图上行走,并且要求最小值/最大值的题目,通常可以利用 动态规划 来解决,我们首先将该题的 状态(本题中即网格图的位置) 提取出来,再观察这个状态是由那些状态转移而来的,是怎么转移的,从而总结出动态转移方程,最后便可以写出代码了。

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

一步一个脚印

不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。

PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。

一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 1000 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!

            知识星球
            
    
    
        
        扫码加入星球
        查看更多优质内容
    
    https://wx.zsxq.com/mweb/views/joingroup/join_group.html?group_id=15522885221412
064.最小路径和
https://clxhxhhr.top/posts/2518/
作者
clxstart
发布于
2026-09-19
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。