算法通关村第十九关——最小路径和

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

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

输出:7

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

复制代码
public int minPathSum(int[][] grid) {
    int m = grid.length, n = grid[0].length;
    int[][] f = new int[m][n];
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            if (i == 0 && j == 0) {
                f[i][j] = grid[i][j];
            } else {
                int top = i - 1 >= 0 ? f[i - 1][j] + grid[i][j] : Integer.MAX_VALUE;
                int left = j - 1 >= 0 ? f[i][j - 1] + grid[i][j] : Integer.MAX_VALUE;
                f[i][j] = Math.min(top, left);
            }
        }
    }
    return f[m - 1][n - 1];
}

对于每一块方块来说,只能从他的上边或者左边走过来,所以在for循环中的要取上边过来的和左边过来的最小的。

并且在dp中的二维数组中每一个位置存放的都是到当前位置的最小路径和。

相关推荐
MicroTech202528 分钟前
微算法科技(NASDAQ MLGO)“自适应委托权益证明DPoS”模型:重塑区块链治理新格局
科技·算法·区块链
FanXing_zl1 小时前
在整数MCU上实现快速除法计算:原理、方法与优化
单片机·嵌入式硬件·mcu·算法·定点运算
Paxon Zhang1 小时前
数据结构之**二叉树**超全秘籍宝典2
java·数据结构·算法
迷途之人不知返2 小时前
链表相关的算法题(2)
数据结构·算法·链表
nju_spy2 小时前
力扣每日一题(四)线段树 + 树状数组 + 差分
数据结构·python·算法·leetcode·面试·线段树·笔试
xie0510_2 小时前
排序算法
数据结构·算法·排序算法
guygg882 小时前
基于自适应傅里叶分解(AFD)及其改进算法的信号分解与重构实现
算法
黑岚樱梦2 小时前
代码随想录打卡day25:56.合并区间
数据结构·算法
自由生长20242 小时前
科普-BOM是什么?和UTF-8什么关系?
算法
小年糕是糕手3 小时前
【数据结构】常见的排序算法 -- 插入排序
c语言·开发语言·数据结构·学习·算法·leetcode·排序算法