稀碎从零算法笔记Day51-LeetCode:最小路径和

news/2025/1/16 2:56:15/

题型:DP、数组、矩阵

链接:64. 最小路径和 - 力扣(LeetCode)

来源:LeetCode

题目描述

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

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

题目样例

示例 1:

leetcode.com%2Fuploads%2F2020%2F11%2F05%2Fminpath.jpg&pos_id=thHwXlSG" width="534" />

输入: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

题目思路

①全局最优,DP  ②找到最短的路径,可以BFS

矩阵,可以用dp[x][y] 来表示到达(x,y)这个点的路径最短长度
dp[x][y]的状态变化,主要看dp[x-1][y] 和 dp[x][y-1](如果没越界的话)
所以可以先初始化dp[][]的左边 和 上边——因为dp[x][0] 只能dp[x-1][0] + grid[x][0]这样走
剩下的 位于矩阵右下角的元素 dp[x][y] = min(dp[x-1][y],dp[x][y-1]) + grid[x][y];

BFS数据量小的话枚举出来所有数据也可以做,数据量太大就没办法了(会超时) 这边不给代码了

C++代码

class Solution {
public:int minPathSum(vector<vector<int>>& grid) {//倒退:dp[row-1][col-1] = min(dp[row-2][col-1],dp[row-1][col-2]);//分析状态:1. x = 0, y > 0 dp[x][y] = dp[x][y-1] + grid[x][y];//         2. x > 0, y = 0 dp[x][y] = dp[x-1][y] + grid[x][y];//         3. x > 0, y > 0 dp[x][y] = min(dp[x-1][y],dp[x][y-1]) + grid[x][y];int row = grid.size();int column = grid[0].size();vector<vector<int>>dp(row,vector<int>(column));dp[0][0] = grid[0][0];// 初始化两条边for(int x = 1 ; x < row ; ++x){dp[x][0] = dp[x-1][0] + grid[x][0];}for(int y = 1 ; y < column ; ++y){dp[0][y] = dp[0][y-1] + grid[0][y];}// 遍历右下角的矩阵for(int x = 1 ; x < row ; ++x)for(int y = 1 ; y < column ; ++y){dp[x][y] = min(dp[x-1][y] , dp[x][y-1]) + grid[x][y];}return dp[row - 1][column - 1];}
};

结算页面


http://www.ppmy.cn/news/1429806.html

相关文章

ELK 日志分析(二)

一、ELK Kibana 部署 1.1 安装Kibana软件包 #上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录 cd /opt rpm -ivh kibana-5.5.1-x86_64.rpm 1.2 设置 Kibana 的主配置文件 vim /etc/kibana/kibana.yml --2--取消注释&#xff0c;Kiabana 服务的默认监听端口为5601 server.po…

PHPStudy(小皮)切换PHP版本PDO拓展失效的问题

因为要看一个老项目&#xff0c;PHP版本在8.0以上会报错&#xff0c;只能切换到7.2&#xff0c;但又遇到了PDO没开启的问题。 PHPStudy上安装的PHP7.2是需要自己配置一下的&#xff0c;里面php.ini文件是空的&#xff0c;需要将php.ini-development改成php.ini&#xff0c;对于…

vue学习日记21:非父子通信(拓展)-event bus 事件总线

一、概念 是一对多的关系 二、代码 BaseA <template><div class"base-a">我是A组件&#xff08;接受方&#xff09;<p>{{msg}}</p> </div> </template><script> import Bus from ../utils/EventBus export default {cr…

uniApp设置和清除定时器

首先是在data中定义一个变量&#xff0c;用来存放定时器 data() {return {timer: null,} } 在适当的地方创建定时器 this.timer setInterval(() > {console.log(111); }, 10000) 在onHide或者是onUnload中销毁定时器&#xff0c;一般来说tabbar页面的切换会触发onHide&…

解决 vue install 引发的 failed Error: not found: python2 问题

发生 install 异常时&#xff0c;提示信息如下所示&#xff1a; npm ERR! code 1 npm ERR! path U:\cnblogs\fanfengping-dtops\fanfengping-dtops-front\node_modules\node-sass npm ERR! command failed npm ERR! command U:\Windows\system32\cmd.exe /d /s /c node scripts…

学习springcloud中Nacos笔记

一、springcloud版本对应 版本信息可以参考&#xff1a;版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 这里说2022.x 分支对应springboot的版本信息&#xff1a; Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot Version 2022.0.0.0* Spring Cloud 202…

【xhs爬虫软件】把小红书评论comment接口封装成GUI采集工具!

用Python开发爬虫采集软件&#xff0c;可自动抓取小红书评论数据&#xff0c;并且含二级评论。 小红书的评论接口URL是&#xff1a; https://edith.xiaohongshu.com/api/sns/web/v2/comment/page 开发者模式分析过程&#xff1a; 进而封装成GUI界面软件&#xff0c;如下&…

IP-guard WebServer 权限绕过漏洞复现(QVD-2024-14103)

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…