20240118-最小下降路径总和

昨天的爬楼梯以前写过,是一道基础的动态规划,就不重新写了。

题目要求

给定一个n*n的矩阵数组,返回通过矩阵的任何下降路径的最小和。

下降路径从第一行中的任何元素开始,并选择下一行中正下方或左右对角线的元素。具体来说,位置(row,col)的下一个元素将为(row+1,col-1)、(row+1,col)或者(row+1,col+1)

思路

采用动态规划的思路来解决。dp[i][j]表示从起始位置出发,到达(i,j)位置的最短路径,能够到达(i,j)位置的途径就有(i-1,j)、(i-1,j-1)、(i-1,j+1)三条渠道。那么为了从起始位置开始遍历从上到下更新距离,就需要给第一行设置初始值0。

状态转移方程dp[i][j]=matrix[i][j]+min({dp[i-1][j], dp[i-1][j-1], dp[i-1][j+1]});

代码

  • 需要注意处理遍历时列的数组越界问题
  • 处理dp数组的初始化问题(直接复制matrix数组)
  • 处理数组越界时对于dp[i-1][j-1]和dp[i-1][j+1]的赋值问题。因为是求最小值,直接INT_MAX;
class Solution {
public:
    int minFallingPathSum(vector<vector<int>>& matrix) {
        vector<vector<int>> dp = matrix;
        int res = INT_MAX;
        for (int i = 1; i < matrix.size(); ++i) {
            for (int j = 0; j < matrix[0].size(); ++j) {
                int left = (j > 0) ? dp[i-1][j-1] : INT_MAX;
                int middle = dp[i-1][j];
                int right = (j < matrix[0].size()-1) ? dp[i-1][j+1] : INT_MAX;
                dp[i][j] = matrix[i][j] + min({left, middle, right});
            }
        }
        for (int j = 0; j < matrix[0].size(); ++j) {
            res = min(res, dp[matrix.size()-1][j]);
        }
        return res;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Flink-1.17-教程】-【三】Flink 运行架构、Flink 核心概念【并行度、算子链、任务槽】、Flink 作业提交流程

【Flink-1.17-教程】-【三】Flink 运行架构、Flink 核心概念【并行度、算子链、任务槽】、Flink 作业提交流程 1&#xff09;系统架构1.1.系统成员组成1.2.作业提交流程 2&#xff09;核心概念2.1. 并行度&#xff08;Parallelism&#xff09;2.1.1.并行子任务和并行度2.1.2.并…

如何无公网ip使用Potplayer访问群晖NAS中储存的本地资源【内网穿透】

文章目录 本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是&#xff1a;1 使用环境要求&#xff1a;2 配置webdav3 测试局域网使用potplayer访问webdav3 内网穿透&#xff0c;映射至公网4 使用固定地址在potplayer访问webdav ​ 国内流媒体平台的内…

2023 年顶级前端工具

谁不喜欢一个好的前端工具&#xff1f;在本综述中&#xff0c;您将找到去年流行的有用的前端工具&#xff0c;它们将帮助您加快开发工作流程。让我们深入了解一下&#xff01; 在过去的 12 个月里&#xff0c;我在我的时事通讯 Web Tools Weekly 中分享了数百种工具。我为前端…

Flink TaskManager内存管理机制介绍与调优总结

内存模型 因为 TaskManager 是负责执行用户代码的角色&#xff0c;一般配置 TaskManager 内存的情况会比较多&#xff0c;所以本文当作重点讲解。根据实际需求为 TaskManager 配置内存将有助于减少 Flink 的资源占用&#xff0c;增强作业运行的稳定性。 TaskManager 内…

Android Dialog setCanceledOnTouchOutside失效,点击dialog外面不消失

前言&#xff1a;有一个需求需要点击dialog外面要消失&#xff0c;本来以为很简单结果设置了一直未生效 setCanceledOnTouchOutside(true); 问了半天chat-gpt4结果给的答案都不明显 查看代码发现设置了style&#xff0c;于是尝试去除这个style&#xff0c;结果点击setCancele…

如何进行高效过滤器检漏:法规标准对比及检漏步骤指南

高效检漏光度计扫描法作为一种关键的高效过滤器检漏手段&#xff0c;在国内受到广泛应用。为确保其有效性和合规性&#xff0c;国内相关法规和标准对其进行了详细规定。本文将对比相关法规&#xff0c;并特别关注检漏过程中的详细步骤。 关于中邦兴业 北京中邦兴业科技有限公司…

买家福音:亚马逊鲲鹏系统全自动操作助你轻松搞定一切

我一直以来都是亚马逊的忠实用户&#xff0c;但是最近我发现了一款真正令人惊叹的工具&#xff0c;改变了我在平台上的经验。我想分享一下我的感受&#xff0c;最近&#xff0c;我得知并尝试了亚马逊鲲鹏系统&#xff0c;简直是为买家账号管理量身定制的利器。在我账号过多时&a…

如何用GPT进行数据分析?

详情点击链接&#xff1a;如何用GPT进行数据分析&#xff1f; 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2 二定制自…

C++初阶类与对象(三):详解复制构造函数和运算符重载

上次介绍了构造函数和析构函数&#xff1a;C初阶类与对象&#xff08;二&#xff09;&#xff1a;详解构造函数和析构函数 今天就来接着介绍新的内容&#xff1a; 文章目录 1.拷贝构造函数1.1引入和概念1.2特性 2.赋值运算符重载2.1运算符重载2.2放在哪里2.3运算符重载示例2.3.…

Java JVM 堆、栈、方法区详解

目录 1. 栈 2. 堆 3. 方法区 4. 本地方法栈 5. 程序计数器 首先来看一下JVM运行时数据区有哪些。 1. 栈 在介绍JVM栈之前&#xff0c;先了解一下 栈帧 概念。 栈帧&#xff1a;一个栈帧随着一个方法的调用开始而创建&#xff0c;这个方法调用完成而销毁。栈帧内存放者方…

JavaScript 学习笔记(WEB APIs Day1)

「写在前面」 本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. JavaScript 学习笔记&#xff08;Day1&#xff09; 2. JavaSc…

[CISCN 2019华北Day2]Web1

[CISCN 2019华北Day2]Web1 wp 很遗憾的是&#xff0c;我在做这题时没有什么头绪。用 sqlmap 开最高等级也只扫出来库名&#xff0c;表名和列名扫不出来&#xff0c;就算直接指定表名和列名&#xff0c;还是扫不出来&#xff0c;sqlmap 测出来的方法是时间盲注。 推荐博客&…

游泳耳机有什么好处?四款适合水下听歌的优质游泳耳机分享

游泳是一项健康有益的运动&#xff0c;而搭配一副高质量的游泳耳机&#xff0c;更能在游泳过程中享受音乐的陪伴。本文将介绍游泳耳机的好处&#xff0c;并为大家推荐四款适合水下听歌的游泳耳机&#xff0c;让大家在游泳中拥有更加丰富的体验。 接下来跟我一起看看游泳耳机的好…

allegro画PCB如何将版图底板改大

Step->Designer Parameter Editor width和hight是你设置的版图高和宽&#xff0c;X和Y是你版图上负坐标的最大值。

PowerScale重磅升级,加速迈进AI时代

2024开年 给大伙报告一则好消息 Dell非结构化数据存储的扛把子 PowerScale迎来重大升级 第二代PowerScale全闪存系统 即将闪亮登场 此次升级主要涉及硬件、软件及与NVIDIA的合作关系三个方面&#xff0c;升级后的PowerScale有望成为第一个通过 NVIDIA DGX SuperPOD验证的以…

【电商API接口】电商卖家必看!电商数据源对接全攻略!收藏!

电商竞争白热化的今天&#xff0c;一个电商卖家往往会在多个平台铺设店铺来获取更多的客户。 不同的平台有不同的管理系统&#xff0c;因此&#xff0c;卖家们在做分析时需要从多个系统导出数据&#xff0c;比如各类电商平台&#xff08;淘宝、京东......&#xff09;、各类ER…

Linux安装ossutil工具且在Jenkins中执行shell脚本下载文件

测试中遇到想通过Jenkins下载OSS桶上的文件&#xff0c;要先在linux上安装ossutil工具&#xff0c;记录安装过程如下&#xff1a; 一、下载安装ossutil&#xff0c;使用命令 1.下载&#xff1a;wget https://gosspublic.alicdn.com/ossutil/1.7.13/ossutil64 2.一定要赋权限…

大数据开发之Hadoop(优化新特征)

第 1 章&#xff1a;HDFS-故障排除 注意&#xff1a;采用三台服务器即可&#xff0c;恢复到Yarn开始的服务器快照。 1.1 集群安全模块 1、安全模式&#xff1a;文件系统只接收读数据请求&#xff0c;而不接收删除、修改等变更请求 2、进入安全模式场景 1&#xff09;NameNod…

kali下-MSF-ftp_login模块破解FTP账号及密码

一、环境准备 两台设备在同一个网络内 一台kali系统&#xff1a;192.168.10.128 一台winserver2016&#xff1a;192.168.10.132 二、MSF介绍 metasploit 全称是The Metasploit Framework&#xff0c;又称MSF&#xff0c;是Kali 内置的一款渗透测试框架&#xff0c;也是全球…

学习JavaEE的日子 day15 访问修饰符,Object,equals底层,final

Day15 1.访问修饰符 理解&#xff1a;给类、方法、属性定义访问权限的关键字 注意&#xff1a; 1.修饰类只能使用public和默认的访问权限 2.修饰方法和属性可以使用所有的访问权限 经验&#xff1a; 1.属性一般使用private修饰&#xff0c;因为封装 2.属性或者方法如果需要被子…
最新文章