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

64.最小路径和

1.题目描述

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

说明:每次只能向下或者向右移动一步。

示例 1:


输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因为路径 1→3→1→1→1 的总和最小。

示例 2:

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

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 200
  • 0 <= grid[i][j] <= 200

2.解题思路

因为每次都只能向右或者向下走,所以当前结点处的所能得到的最小路径和就取决于它上面一个位置和左边一个位置处哪条路径的和最小,选择较小值对应的那条路径。

因此矩阵dp[i][j]的含义为:在i,j所在的位置所能得到的最小的路径和

但第0行和第0列相对比较特殊,它们只能由一个方向得到,因此需要先对它们进行初始化

然后,对于其他位置,都可以通过递推式:

dp[i][j] = min(dp[i-1][j],dp[i][j-1]) + grid[i][j]得到,到矩阵右下角的最小路径和即为dp[m-1][n-1]

3.代码实现

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【ragflow】安装2:源码安装依赖
  • Linux—— 配置ssl安全证书
  • 学习Kerberos
  • Android Framework(三)Activity启动流程
  • Python优化算法24——基于觅食生境选择的粒子群算法(FHSPSO)
  • 面向对象软件编程——OOP入门实践
  • MySQL进阶篇1
  • 深度学习100问50:seq2seq的原理是什么
  • 分布式主键
  • kubeadm部署 Kubernetes(k8s) 高可用集群【V1.28 】
  • 解锁 Redis:探索连接策略、数据编码与性能秘诀
  • 华为AC旁挂二层组网配置详解:从DHCP部署到无线业务配置,完成网络搭建
  • Golang | Leetcode Golang题解之第388题文件的最长绝对路径
  • MySQL迁移到ClickHouse
  • 边缘计算与物联网中的深度学习应用
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • bootstrap创建登录注册页面
  • canvas 绘制双线技巧
  • CEF与代理
  • HTML-表单
  • iOS编译提示和导航提示
  • JavaScript实现分页效果
  • k8s 面向应用开发者的基础命令
  • LintCode 31. partitionArray 数组划分
  • Making An Indicator With Pure CSS
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 大快搜索数据爬虫技术实例安装教学篇
  • 服务器从安装到部署全过程(二)
  • 基于 Babel 的 npm 包最小化设置
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端面试之CSS3新特性
  • 异步
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 组复制官方翻译九、Group Replication Technical Details
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # 数据结构
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $ git push -u origin master 推送到远程库出错
  • (二)hibernate配置管理
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .NET C# 配置 Options
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .net core 的缓存方案
  • .NET 直连SAP HANA数据库
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .net和jar包windows服务部署
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @Transactional类内部访问失效原因详解
  • [000-01-011].第2节:持久层方案的对比
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [C++] 从零实现一个ping服务