前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天手撕一道算法-64. 最小路径和

每天手撕一道算法-64. 最小路径和

作者头像
编程之心
发布2020-08-13 11:54:17
3630
发布2020-08-13 11:54:17
举报
文章被收录于专栏:编程之禅编程之禅

每天手撕一道算法-64. 最小路径和

64. 最小路径和

题目:

image-20200810205706396
image-20200810205706396

题目解析:

image-20200810210019970
image-20200810210019970

这题的意思是从左上角到右下角,(注意:每次是向下或者向右移动一格),所走过的路径数字和要求最小。

这道题要用动态规划,在原来的数组上去改变值。先从最近的开始,得到最优解,再慢慢递推到外面一层。

image-20200810211502786
image-20200810211502786
代码语言:javascript
复制
/*
这题的意思是从左上角到右下角,(注意:每次是向下或者向右移动一格),所走过的路径数字和要求最小。

这道题要用动态规划,在原来的数组上去改变值。先从最近的开始,得到最优解,再慢慢递推到外面一层。
*/
class Solution {
    public int minPathSum(int[][] a) {

        for (int i = 0; i < a.length; i++)
            for(int j = 0; j < a[0].length; j++) {
                if (i == 0 && j == 0) continue; // 略过左上角的值
                // 最上面一行,值更新为左边的数+现在的数。因为只能从左边过来。
                else if (i == 0) a[i][j] += a[i][j-1];
                // 最左边一列,值更新为上面的数+现在的数。因为只能从上边过来。
                else if (j == 0) a[i][j] += a[i-1][j];
                // 其余情况,要么从上面过来,要么从左边过来,选值小的那个
                else a[i][j] += Math.min(a[i-1][j],a[i][j-1]);
            }
        return a[a.length-1][a[0].length-1]; // 返回最后一个数
    }
}

[参考资料]:

1.https://leetcode-cn.com/problems/minimum-path-sum/solution/zui-xiao-lu-jing-he-dong-tai-gui-hua-gui-fan-liu-c/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 每天手撕一道算法-64. 最小路径和
    • 64. 最小路径和
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档