Leetcode刷题详解——下降路径最小和

1. 题目链接:931. 下降路径最小和

2. 题目描述:

给你一个 n x n方形 整数数组 matrix ,请你找出并返回通过 matrix下降路径最小和

下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)(row + 1, col) 或者 (row + 1, col + 1)

示例 1:

img

输入:matrix = [[2,1,3],[6,5,4],[7,8,9]]
输出:13
解释:如图所示,为和最小的两条下降路径

示例 2:

img

输入:matrix = [[-19,57],[-40,-5]]
输出:-59
解释:如图所示,为和最小的下降路径

提示:

  • n == matrix.length == matrix[i].length
  • 1 <= n <= 100
  • -100 <= matrix[i][j] <= 100

3. 解法(动态规划):

3.1算法思路:

3.1.1 状态表示:

dp[i][j]表示:到达[i,j]位置时,所有下降路径中的最小和

3.1.2 状态转移方程:

到达 [i,j]位置可能有三种情况:

请添加图片描述

我们要的是三种情况下的最小值,然后加上矩阵在[i,j]位置

于是dp[i,j]=min(dp[i-1][j],min(dp[i-1][j-1],dp[i-1][j+1]))+matrix[i,j]

3.1.3 初始化

可以在最前面加上一个辅助结点,进行初始化。使用这种技巧需要注意两点:

  1. 辅助结点里面的值要保证后续填表是正确的

  2. 下标的映射关系

  3. 在本题中,需要加上一行,并且加上两列。所有位置都初始化为无穷大,然后将第一行初始化为0即可

请添加图片描述

3.1.4 填表顺序

从上往下

3.1.5 返回值

注意这里不是返回dp[m][n]的值

题目要求:【只要到达最后一行】,因此这里应该返回【dp表最后一行的最小值】

3.2 C++算法代码:

class Solution {
public:int minFallingPathSum(vector<vector<int>>& matrix) {int n=matrix.size();//创建dp表vector<vector<int>>dp(n+1,vector<int>(n+2,INT_MAX));//初始化第一行for(int j=0;j<n+2;j++) dp[0][j]=0;//填表for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){dp[i][j]=min(dp[i-1][j-1],min(dp[i-1][j],dp[i-1][j+1]))+matrix[i-1][j-1];}}int ret=INT_MAX;for(int j=0;j<=n;j++){ret=min(ret,dp[n][j]);}//返回结果return ret; }
};

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

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

相关文章

SpringBoot集成与应用Neo4j

文章目录 前言集成使用定义实体配置定义Repository查询方法方式一&#xff1a;Query方式二&#xff1a;Cypher语法构建器方式三&#xff1a;Example条件构建器方式四&#xff1a;DSL语法 自定义方法自定义接口继承自定义接口实现自定义接口neo4jTemplateNeo4jClient 自定义抽象…

Visual Studio(VS)C++项目 管理第三方依赖库和目录设置

发现很多程序员存在这种做法&#xff1a;把项目依赖的第三方库的lib和dll放在项目目录下&#xff0c;或者复制到输出目录&#xff0c;因为每种配置都有不同的输出目录&#xff0c;所以要复制多份&#xff08;至少包括Debug和Release两个输出目录&#xff09;&#xff0c;这些做…

MySQL -- 表的增删查改

MySQL – 表的增删查改 文章目录 MySQL -- 表的增删查改一、Create创建1.插入数据2.插入否则更新3.替换 二、Retrieve查找1.select列1.1.全列查询1.2.指定列查询1.3.查询字段为表达式1.4.为查询结果指定别名1.5.结果去重 2.where条件2.1.英语不及格的同学&#xff08;英语<6…

Golang:浅析Context包

概述 在golang官方文档context package - context - Go Packages中是这样介绍context包的: 在context包中定义了context类型来在不同的Goroutine 之间传递上下文,携带截止时间、取消信号以及携带上下文的系统参数(k-v)的类型。对服务器的传入请求应该创建上下文,对服务器…

MA网络下,静态路由仅配出接口,不配下一跳是否可行

在MA网络模式下&#xff0c;静态路由只配置出接口&#xff0c;不配置下一跳地址是否可行 如下拓扑图&#xff1a; 如图所示&#xff0c;在R1上配置一条去往4.4.4.4的静态路由&#xff0c;此时如果静态路由只配置出接口&#xff0c;不配置下一跳地址&#xff1a; ip route-stat…

MongoDB-入门

MongoDB入门 1、基本概念 NameDescripe文档文档是 MongoDB 中数据的基本单位&#xff0c;是一组有序键值的集合。类似于关系数据库中的一行行数据。通常以键—值对的形式存在于数据库中。一般情况键是字符串类型&#xff0c;区分大小写、并且不能包含重复的键&#xff08;唯一…

山河CTF(部分write up)

MISC [WEEK1]签到题 下载题目并打开&#xff1a; base128编码&#xff1a; Wm14aFozdDBhR2x6WDJselgyWnNZV2Q5 因为是base128编码&#xff0c;所以通过两次base64解码&#xff0c;即可得出flag 爆出flag&#xff1a; flag{this_is_flag} 总结&#xff1a; 这道签到题主要考察了…

Linux MeterSphere测试平台远程访问你不会?来试试这篇文章

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《粉丝福利》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网…

[C++]命名空间等——喵喵要吃C嘎嘎

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;大大会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

目标检测 YOLOv5 预训练模型下载方法

目标检测 YOLOv5 预训练模型下载方法 flyfish https://github.com/ultralytics/yolov5 https://github.com/ultralytics/yolov5/releases 可以选择自己需要的版本和不同任务类型的模型 后缀名是pt

MongoDB的安装

MongoDB的安装 1、Windows下MongoDB的安装及配置 1.1 下载Mongodb安装包 下载地址&#xff1a; https://www.mongodb.com/try/download http://www.mongodb.org/dl/win32 MongoDB Windows系统64位下载地址&#xff1a;http://www.mongodb.org/dl/win32/x86_64 MongoDB W…

python采集电商jd app商品详情数据(2023-10-30)

一、技术要点&#xff1a; 1、cookie可以从手机app端用charles抓包获取&#xff1b; 2、无需安装nodejs&#xff0c;纯python源码&#xff1b; 3、商品详情接口为&#xff1a;functionId "wareBusiness"&#xff1b; 4、clientVersion "10.1.4"同…

大数据-玩转数据-Python Sftp Mysql 数据

一、需求描述 1、从Mysql数据库表下载数据到服务器&#xff1b; 2、将数据已csv文件格式存储并对数据格式进行处理&#xff08;添加表头&#xff0c;表头和数据均用竖线分隔符隔开&#xff0c;末尾也加分割符&#xff09;&#xff1b; 3、文件路径文件夹以天为单位&#xff0c…

vue2.x 二次封装element ui 中的el-dialog

在做后台管理系统的时候&#xff0c;dialog组件是我们使用频率比较高的组件&#xff0c;但是有一些需求现有的组件是不满足的。因此会需要我们做二次封装。 组件本身的属性我们保留&#xff0c;只需要根据需求添加&#xff0c;然后在使用的时候props去拿取使用就可以了。 本次遇…

java阵道之适配器大阵

开个玩笑&#xff0c;这里是一篇适配器模式讲解 定义&#xff1a; 适配器模式将某个类的接口转换成客户端期望的另一个接口表示&#xff0c;目的是消除由于接口不匹配所造成的类的兼容性问题。 主要分为三类&#xff1a;类的适配器模式、对象的适配器模式、接口的适配器模式。…

【原创】java+swing+mysql志愿者管理系统设计与实现

摘要&#xff1a; 志愿者管理系统是一个用于管理志愿者以及活动报名的系统&#xff0c;提高志愿者管理的效率&#xff0c;同时为志愿者提供更好的服务和体验。本文主要介绍如何使用javaswingmysql去实现一个志愿者管理系统。 功能分析&#xff1a; 系统主要提供给管理员和志…

洞察运营机会的数据分析利器

这套分析方法包括5个分析工具&#xff1a; 用“描述性统计”来快速了解数据的整体特点。用“变化分析”来寻找数据的问题和突破口。用“指标体系”来深度洞察变化背后的原因。用“相关性分析”来精确判断原因的影响程度。用“趋势预测”来科学预测未来数据的走势&#xff0c;

少儿编程 2023年9月中国电子学会图形化编程等级考试Scratch编程四级真题解析(选择题)

2023年9月scratch编程等级考试四级真题 选择题(共25题,每题2分,共50分) 1、角色为一个紫色圆圈,运行程序后,舞台上的图案是 A、 B、 C、 D、 答案:A

阿里云推出通义千问App,提供全方位的协助

&#x1f989; AI新闻 &#x1f680; 阿里云推出通义千问App&#xff0c;提供全方位的协助 摘要&#xff1a;阿里云旗下大模型通义千问App登陆各大安卓应用市场&#xff0c;具有超大规模预训练模型&#xff0c;可在创意文案、办公助理、学习助手、趣味生活等方面协助用户。功…

Redis测试新手入门教程

在测试过程中&#xff0c;我们或多或少会接触到Redis&#xff0c;今天就把在小破站看到的三丰老师课程&#xff0c;把笔记整理了下&#xff0c;用来备忘&#xff0c;也希望能给大家带来亿点点收获。 主要分为两个部分&#xff1a; 一、缓存技术在后端架构中是如何应用的&#…