力扣题库刷题笔记64-最小路径和

1、题目如下:

2、个人Python代码实现:

         以上代码主要是照抄题解,根据调试bug了解每一步的逻辑,然后注释利于读懂本题,写本篇文章的目的在于初步了解动态规划。

        本题的逻辑主要如下:

        a、列表中每个数字代表当前路径的步数,整个代码的逻辑是将每个元素当前路径的步数转换成到当前路径的最小总步数

        b、以grid[1][0]、grid[0][1]为例,grid[0][0]的起始步数为1,grid[0][1]的步数为3,所以到grid[1][0]的总步数=grid[0][0] + grid[1][0]=3+1=4;同理grid[1][0]的总步数=grid[0][0] + grid[1][0]=1+1=2

        c、以grid[1][1]为例,到grid[1][1]有两种路径,分别是grid[1][0] + grid[1][1]和grid[0][1] + grid[1][1],注意这里的grid[1][0]和grid[0][1]是逻辑b中计算的总步数(已标红),所以计算grid[1][1]的最小步数就是grid[1][0]和grid[0][1]的最小值再加上grid[1][1]的当前步数

        d、汇总逻辑b、c则如下:当当前元素在第一行时,元素的总步数一定是当前元素的步数加上左方元素的总步数;当当前元素在第一列时,元素的总步数一定是当前元素的步数加上上方元素的总步数;当当前元素既不在第一行、又不在第一列时,取上方、左方步数的较小值,再加上元素本身的步数,即为最小总步数。

        通过以上逻辑,将路径上的数字,转换成到该路径的最小数字和,返回最后一个值即可,下图,即为示例转换后的列表:

3、Java代码实现: 

        这里注意三点(个人犯的错,记录):

        a、Java语法是else if 而不是elif

        b、Java可以通过Math.min取最小值

        c、Java不能写成grid[-1][-1]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值