[leetcode] 64. 最小路径和

文章目录

  • 题目描述
  • 解题方法
    • 动态规划
      • java代码
      • 复杂度分析
  • 相似题目

题目描述

给定一个包含非负整数的 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

解题方法

动态规划

这道题和第63题相似。
我们设 f ( i , j ) f(i, j) f(i,j)为机器人从左上角走到 ( i , j ) (i, j) (i,j)的最小数字总和,若机器人在 ( i , j ) (i,j) (i,j)处,则机器人上一步的位置在 ( i − 1 , j ) (i-1,j) (i1,j)或者 ( i , j − 1 ) (i,j-1) (i,j1)处,由此可推出,

  • i > 0 i > 0 i>0 j > 0 j > 0 j>0 时, f ( i , j ) = m i n ( f ( i − 1 , j ) , f ( i , j − 1 ) ) + g r i d [ i ] [ j ] f(i,j) = min(f(i-1,j), f(i,j-1)) + grid[i][j] f(i,j)=min(f(i1,j),f(i,j1))+grid[i][j]
  • i = 0 i = 0 i=0 j = 0 j = 0 j=0 时, f ( i , j ) = g r i d [ i ] [ j ] f(i,j) = grid[i][j] f(i,j)=grid[i][j]
  • i > 0 i > 0 i>0 j = 0 j = 0 j=0 时, f ( i , j ) = f ( i − 1 , j ) + g r i d [ i ] [ j ] f(i,j) = f(i-1,j) + grid[i][j] f(i,j)=f(i1,j)+grid[i][j]
  • i = 0 i = 0 i=0 j > 0 j > 0 j>0 时, f ( i , j ) = f ( i , j − 1 ) + g r i d [ i ] [ j ] f(i,j) = f(i,j-1) + grid[i][j] f(i,j)=f(i,j1)+grid[i][j]

java代码

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];for (int i = 1; i < m; i++) {dp[i][0] = dp[i - 1][0] + grid[i][0];}for (int i = 1; i < n; i++) {dp[0][i] = dp[0][i - 1] + grid[0][i];}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];
}

复杂度分析

时间复杂度: O ( m ∗ n ) O(m*n) O(mn),需要遍历一次数组。
空间复杂度: O ( m ∗ n ) O(m*n) O(mn),需要提供dp数组的存储空间。

相似题目

[leetcode] 62. 不同路径
[leetcode] 63. 不同路径 II


  • 个人公众号
    个人公众号
  • 个人小游戏
    个人小游戏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/669980.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区块链开发用的是哪种编程语言?

区块链技术作为近年来备受瞩目的新兴技术之一&#xff0c;其核心的特性之一就是去中心化、安全性高、透明度高和可扩展性强。而区块链的开发语言则是实现这一技术的关键因素之一。那么&#xff0c;区块链开发语言是哪一种编程语言呢&#xff1f; 一、区块链开发语言的特点和选…

Whisper、Voice Engine推出后,训练语音大模型的高质量数据去哪里找?

近期&#xff0c;OpenAI 在语音领域又带给我们惊喜&#xff0c;通过文本输入以及一段 15 秒的音频示例&#xff0c;可以生成既自然又与原声极为接近的语音。值得注意的是&#xff0c;即使是小模型&#xff0c;只需一个 15 秒的样本&#xff0c;也能创造出富有情感且逼真的声音。…

.[[MyFile@waifu.club]].svh勒索病毒数据库恢复方案

.[[MyFilewaifu.club]].svh勒索病毒有什么特点&#xff1f; .[[MyFilewaifu.club]].svh是一种最近多发的勒索病毒&#xff0c;它通过加密受害者的文件并要求支付赎金来解锁&#xff0c;从而达到勒索钱财的目的。恢复重要数据请添加技术服务号(safe130)。以下是关于这种病毒的详…

同创优配正规股票港股市场炒股加仓!中国资产,火了

查查配近日,受国内利好政策不断、全球资金对中国市场信心提升等多重因素影响,市场风险偏好明显上升,A股、港股市场均表现强劲,上证指数站上3100点,恒生指数也上演九连阳,创下2018年以来的最长连涨纪录。从资金动向来看,机构加仓明显,北向资金持续净买入,A股ETF也被大幅加仓,部分…

分割出三个面的点云数据或者四个面的矩形点云数据分割 附python代码

目的:把下图的三维空间的墙壁点云分割开,最后的效果如下图 思路:先把点云转成二维的点云,然后找到四个角的点的位置,然后根据4个点的之间两两连成的线段,来判断每个点和每条线段之间的距离,从而得到每个点处于哪个线段上,这样就最终得到了三个面或四个面的三维点云的分…

武汉星起航:助力客户在亚马逊平台顺利入驻,实现跨境电商新飞跃

在全球化浪潮的推动下&#xff0c;跨境电商行业迎来了前所未有的发展机遇。作为全球电商巨头&#xff0c;亚马逊以其独特的平台属性和消费群体较高的消费能力&#xff0c;吸引了众多中国卖家的目光。武汉星起航电子商务有限公司凭借其专业的运营团队和丰富的行业经验&#xff0…

前后端功能实现——添加品牌

需求 点击新增&#xff0c;跳转到添加品牌的页面&#xff0c;从后一个页面提交品牌数据&#xff1a; 1、BrandMapper接口添加add()方法 /** * 添加品牌 */ void add(Brand brand); 2、BrandMapper.xml中添加sql方法 <insert id"add">insert into brand val…

java线上问题排查之内存分析(三)

java线上问题排查之内存分析 使用top命令 top命令显示的结果列表中&#xff0c;会看到%MEM这一列&#xff0c;这里可以看到你的进程可能对内存的使用率特别高。以查看正在运行的进程和系统负载信息&#xff0c;包括cpu负载、内存使用、各个进程所占系统资源等。 2.用jstat命令…

单元测试配置

检查 vendor 目录下 是否有bin目录, bin目录下是否有 phpunit 文件 没有安装 composer require —dev phpunit/phpunit 确认版本是 PHPUnit 9.6.7配置IDE配置php解释器点击绿色箭头,运行测试查看效果备注: 单步调试需要安装 xdebug

CPU炼丹——YOLOv5s

1.Anaconda安装与配置 1.1安装与配置 Anaconda3的安装看下面的教程&#xff1a; 最新Anaconda3的安装配置及使用教程&#xff08;详细过程&#xff09;http://t.csdnimg.cn/yygXD&#xff0c;接上面文章下载后&#xff0c;配置环境变量的时候记得在原来你装的Python更下面添…

Linux的基础IO:文件描述符 重定向本质

目录 前言 文件操作的系统调用接口 open函数 close函数 write函数 read函数 注意事项 文件描述符-fd 小补充 重定向 文件描述符的分配原则 系统调用接口-dup2 缓冲区 缓冲区的刷新策略 对于“2”的理解 小补充 前言 在Linux中一切皆文件&#xff0c;打开文件…

接口测试及常用的接口测试工具(Postman/Jmeter)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接…