描述

给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。
你在同一时间只能向下或者向右移动一步

样例
样例 1:
输入: [[1,3,1],[1,5,1],[4,2,1]]
输出: 7

样例解释:
路线为: 1 -> 3 -> 1 -> 1 -> 1。

样例 2:
输入: [[1,3,2]]
输出: 6

解释:
路线是: 1 -> 3 -> 2

思路

题目要求只能往下或者向右走。

则单元格dp(i,j)题解应该是单元格dp(i-1,j)单元格dp(i,j-1)的较小值+单元格(i,j)的值。
考虑特殊情况边界问题:
(1)左边为边界,即i=0情况下,单元格dp(i,j)题解只能从上面来
解为单元格dp(i,j-1)+单元格(i,j)的值。
(2)上边为边界,即j=0情况下。解只能从左边来。解为单元格dp(i-1,j)+单元格(i,j)的值。
(3)上下都是边界,即处于起点位置,直接返回坐标(i,j)。

代码

class Solution:"""@param grid: a list of lists of integers@return: An integer, minimizes the sum of all numbers along its path"""def minPathSum(self, grid):# write your code hereif (not grid):return 0m = len(grid)#行数n = len(grid[0])#列数for i in range(1, n):#左边为边界时,解只能从上班来grid[0][i] += grid[0][i - 1]for j in range(1, m):#上边为边界时,解只能从左边来grid[j][0] += grid[j - 1][0]for x in range(1, m):#无边界时for y in range(1, n):grid[x][y] += min(grid[x - 1][y], grid[x][y - 1])return grid[-1][-1] #包含了左边和上都是边界的情况
c=Solution()
grid=[[1,3,1],[1,5,1],[4,2,1]]d=c.minPathSum(grid)
print(d)

答案:

半路出家的小白,写博文不容易。如果你觉得本文对你有用,请点个赞支持下。

leetcode最小路径和 (动态规划)python相关推荐

  1. LeetCode:64. 最小路径和(python、c++)

    题目描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [ [1,3,1], [1,5 ...

  2. [Leetcode][第120题][JAVA][三角形最小路径和][动态规划][递归]

    [问题描述][中等] [解答思路] 1. 动态规划思路一 自上而下 第 1 步:设计状态 f[i][j] 表示从三角形顶部走到位置 (i,j) 的最小路径和 位置(i,j) 指的是三角形中第 i 行第 ...

  3. LeetCode 120. 三角形最小路径和(动态规划)

    题目描述 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径 ...

  4. 三角形最小路径和(动态规划)

    原创公众号:bigsai 欢迎加入力扣打卡 文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star 题目描述 力扣120原题 给定一个三角形 triangle ,找出自顶向下的最小路径和. ...

  5. 矩阵的最小路径和——动态规划

    题目描述: 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和. 示例: [[1,3,5,9] ...

  6. 93. Leetcode 64. 最小路径和 (动态规划-路径规划)

    步骤一.确定状态: 1.确定原问题中变化的变量个数 2.考虑最后一步 右下角坐标设为(m-1,n-1) 那么前一步一定是在(m-2,n-1)或者(m-1,n-2) 步骤二.推断状态方程: f[i][j ...

  7. LeetCode 64.最小路径和(动态规划)

    题目描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [ [1,3,1], [1,5 ...

  8. leetcode解码方法(动态规划python)

    描述 有一个消息包含A-Z通过以下规则编码 'A' -> 1 'B' -> 2 - 'Z' -> 26 现在给你一个加密过后的消息,问有几种解码的方式 我们不能解码空串,因此若消息为 ...

  9. leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)

    题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...

最新文章

  1. seaborn使用displot函数实现多面板直方图(Multi-panel)可视化:使用set_title函数自定义设置多面板直方图标题(Multi-panel histograms’ title)
  2. linux服务器性能监控命令汇总(一)
  3. Android•Lottie动画库填坑记
  4. ado.net封装类
  5. 怎么设置电脑屏幕一直亮着_电脑屏幕缩小了肿么调回去。分辨率调了没用。
  6. STM32 USB虚拟串口原理(上)
  7. python将txt转json_Python控制乐高EV3,以及VSCODE环境配置
  8. Docker轻量级管理工具Portainer
  9. 微信成为开发者C#代码
  10. C# 基于MySQL的数据层基类(MySQLHelper)
  11. AS3类库资源大集合
  12. 大数据笔记(二):HDFS原理知识
  13. SQL 插入一列数据
  14. 电子设计教程19:晶体管负反馈放大电路的原理设计
  15. zh-cn语言(文化)代码与国家地区对照表
  16. HTML怎么设置左边外距5像素,css怎么设置左边距
  17. FileOpen 打开文件
  18. 如何解决 zsh: event not found: e]st1问题
  19. 查看计算机真实用户名(username)
  20. java程序员 .net 程序员_Java 程序员 和 .NET 程序员

热门文章

  1. java 静态块的作用域_java 学习笔记(一)
  2. app 访问h5 如何截取_微信H5支付申请相关问题
  3. Go——从文件路径解析解析GAVC坐标解决方案
  4. TensorFlow——加载和使用多个模型解决方案
  5. Seven Segment Display
  6. 【学习笔记】mybatis自定义插件案例代码
  7. MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
  8. HBase 0.94.21 zookeeper-3.4.6 分布式安装
  9. 实验吧— Crypto Write up(一)
  10. 关系数据库和nosql