当前位置: 首页 > news >正文

力扣 最小路径和

又是一道动态规划基础例题。

题目

这道题可以类似不同路径。先把左上角格子进行填充,然后用一个数组去更新每走到一个格的数字总和,首先处理边界问题,把最左边的列只能由上方的行与原来的格子数值的和,同理,最上方的行只能由作左边的行与原来的格子数值的和,然后像上次路径dp那样做遍历,直到取出右下角的坐标的数值即可。

class Solution {public int minPathSum(int[][] grid) {// f[m][n] = Math.min(f[m-1][n],f[m][n-1]) + grid[m][n]int m = grid.length ;int n = grid[0].length;int[][] dp = new int[m][n];dp[0][0] = grid[0][0];for ( int i = 1 ; i < m ; i++ ) {dp[i][0] = grid[i][0]+dp[i-1][0];}for ( int i = 1 ; i < n ; i++ ) {dp[0][i] = grid[0][i] + dp[0][i-1];}for ( int i = 1 ;  i < m ;  i++ ) {for ( int j = 1 ; j < n ; j++ ) {dp[i][j] = grid[i][j] + Math.min(dp[i-1][j],dp[i][j-1]);}}return dp[m-1][n-1];}
}

也可以优化成滚动数组。

class Solution {public int minPathSum(int[][] grid) {if (grid == null || grid.length == 0 || grid[0].length == 0) {return 0;}int rows = grid.length, columns = grid[0].length;// 创建一个一维数组 dp 来存储每一行的路径和int[] dp = new int[columns];dp[0] = grid[0][0]; // 起点处的最小路径和for (int j = 1; j < columns; j++) {dp[j] = dp[j - 1] + grid[0][j];}for (int i = 1; i < rows; i++) {// 第一列的位置,路径只能从上方来dp[0] += grid[i][0];for (int j = 1; j < columns; j++) {dp[j] = Math.min(dp[j], dp[j - 1]) + grid[i][j];}}// 最终的结果在 dp[columns - 1] 中,表示右下角的最小路径和return dp[columns - 1];}
}

典型路径动态规划,助你找准最好的路径。 

http://www.lryc.cn/news/483067.html

相关文章:

  • Scala中的可变Map操作:简单易懂指南 #Scala Map #Scala
  • 【go从零单排】XML序列化和反序列化
  • 在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5
  • 在 Ubuntu 上安装 `.deb` 软件包有几种方法
  • 一文了解Android本地广播
  • Ingress nginx 公开TCP服务
  • 谷歌浏览器支持的开发者工具详解
  • 【数据结构】汇编 、机器语言 高级语言 简析。
  • 【青牛科技】GC3901,强势替代 A3901/ALLEGRO应用于摇头机等产品中
  • Java API类与接口:类的转换方法与正则表达式
  • OceanBase JDBC (Java数据库连接)的概念、分类与兼容性
  • Linux服务器定时执行jar重启命令
  • 速览!Win11 22H2/23H2 11月更新补丁KB5046633发布!
  • A day a tweet(sixteen)——The better way of search of ChatGPT
  • 【网络】HTTP 协议
  • git push报错 unexpected disconnect while reading sideband packet
  • JSX 语法与基础组件使用
  • ReactPress:构建高效、灵活、可扩展的开源发布平台
  • emulator总结
  • 【Docker】‘docker‘ 不是内部或外部命令,也不是可运行的程序 或 批处理文件
  • Mysql高可用架构方案
  • Go,15岁了[译]
  • 【大数据学习 | kafka高级部分】kafka的数据同步和数据均衡
  • 微擎框架php7.4使用phpexcel导出数据报错修复
  • Netty实现WebSocket Server是否开启压缩深度分析
  • 【Xrdp联机Ubuntu20.04实用知识点补充】
  • 【电脑】解决DiskGenius调整分区大小时报错“文件使用的簇被标记为空闲或与其它文件有交叉”
  • IDC机房服务器托管的费用组成
  • Halcon深度学习网络模型简介
  • ROM修改进阶教程------安卓14 安卓15去除app签名验证的几种操作步骤 详细图文解析