力扣热门100题之最小路径和

核心思路

  • 只能右 / 下
  • 到达 (i,j) 的最小和 = min (上面来,左边来) + 当前格子值
  • 第一行、第一列要先累加好

转移方程

复制代码
dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + grid[i][j];

通俗解释

  1. 第一列:只能从上边走下来,所以一路累加
  2. 第一行:只能从左边走过来,一路累加
  3. 中间格子
    • 从上面来的代价:grid[i-1][j]
    • 从左边来的代价:grid[i][j-1]
    • 小的那个,再加上当前格子数值

完整代码实现:

java 复制代码
class Solution {
    public int minPathSum(int[][] grid) {
        int m = grid.length;
        int n = grid[0].length;

        //第一列累加
        for(int i = 1;i<m;i++){
            grid[i][0] += grid[i-1][0];
        }
        //第一行累加
        for(int j = 1;j<n;j++){
            grid[0][j] += grid[0][j-1];
        }

        //中间:取上,左较小值 + 当前值
        for(int i = 1;i<m;i++){
            for(int j =1;j<n;j++){
                grid[i][j] += Math.min(grid[i-1][j],grid[i][j-1]);
            }
        }
        return grid[m-1][n-1];
    }
}
相关推荐
源码之家2 小时前
计算机毕业设计:Python棉花产业数据可视化与预测系统 Django框架 ARIMA算法 数据分析 可视化 爬虫 大数据 大模型(建议收藏)✅
人工智能·python·算法·信息可视化·数据挖掘·django·课程设计
qeen872 小时前
【算法笔记】前缀和经典题目解析
c语言·c++·笔记·学习·算法
Je1lyfish2 小时前
Haskell 初探
开发语言·笔记·算法·rust·lisp·抽象代数
im_AMBER2 小时前
Leetcode 159 无重复字符的最长子串 | 长度最小的子数组
javascript·数据结构·学习·算法·leetcode
浮芷.2 小时前
微观搜打撤:基于鸿蒙flutter的内存快照算法的局内外状态隔离与高阶背包系统设计
算法·flutter·华为·开源·harmonyos·鸿蒙
郝学胜-神的一滴2 小时前
[力扣 105]二叉树前中后序遍历精讲:原理、实现与二叉树还原
数据结构·c++·算法·leetcode·职场和发展
sheeta19982 小时前
LeetCode 每日一题笔记 日期:2026.04.20 题目:2078.两栋颜色不同而距离最远的房子
笔记·算法·leetcode
闻缺陷则喜何志丹2 小时前
【ST表 前缀和】P7809 [JRKSJ R2] 01 序列|普及+
c++·算法·前缀和·洛谷·st表
X journey2 小时前
机器学习实践(18.5):特征工程补充
人工智能·算法·机器学习