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

【力扣每日一题】2023.8.10 下降路径最小和Ⅱ

目录

题目:

示例:

分析:

代码:


题目:

示例:

分析:

题目给我们一个数组,让我们模拟从上面第一层走到下面的最后一层,下降路径需要加上经过的格子的值,每层走的格子不能和相邻层走的格子在同一列,让我们返回下降路径的最小和。

那既然是要路径的总和最小,那么我每次都只选择最小的数不就好啦。

不过相邻行的最小元素所在的列可能是会一样的,这样我们就不能直接无脑选择最小了,我们每次选择本行经过哪一格的时候,需要做个判断,只要你这格子的列跟我上一行最小数的列不一样,那么我就在你这格子的值我再加上上一层的最小值,这样就可以表示我从上面的最小格走到你这边,这格的数就是我从上面走到这个格子的下降路径和,我们这样不断累加,直到最后统计最后一行的最小值,那就是总的下降路径最小和了。

不过还有一个问题,和上一行最小值的不同列的格子我们都更新数值了,那么同列的格子我们应该怎么更新呢?我们可以记录下第二小的数,如果一个格子和上一列的最小数同列,那么它就不会和第二小的数同列,既然无法加最小的数,那么退而求其次,我加上第二小的数也凑合。

所以我们需要维护两个变量,分别来存储上一层第一小的元素和列下标以及上一层第二小的元素和列下标。

我们还需要在遍历每层的时候就更新这两个变量,作为下一层的上一层最小元素,但是这样会造成数据污染,如果我还没遍历完整层元素就把这两个变量给更新了,那么本层中后面的格子可能用的就不是上一层的最小数而是本层的最小数了。

所以我们其实一共需要四个变量,两个变量一样是存储上一层的第一小和第二小的元素和列下标。另外两个变量就用来存储本层的第一小和第二小元素和列下标。在遍历完整层之后,再将上一层的两个变量更新为本层的两个变量。

最后我们返回最后一层的最小值,那就是我们要返回的下降路径最小和了。

代码:

class Solution {
public:int minFallingPathSum(vector<vector<int>>& grid) {int n=grid.size();if(n==1) return grid[0][0];pair<int,int>min1{-1,0},min2{-1,0}; //初始化成最小次小都为0,这样在第一层操作的时候就不会有影响for(int i=0;i<n;i++){pair<int,int>min11{0,INT_MAX},min22{0,INT_MAX}; //记录本层的最小和次小,用于更新for(int j=0;j<n;j++){if(j!=min1.first) grid[i][j]+=min1.second;  //如果不是和上层最小的列一样就添加最小.else grid[i][j]+=min2.second;   //反之添加次小.if(grid[i][j]<min11.second){    //更新本层的最小min22=min11;    //最小更新以后,之前的最小就是现在的次小min11.first=j;min11.second=grid[i][j];}else if(grid[i][j]<min22.second){  //更新本层的次小min22.first=j;min22.second=grid[i][j];}}min1=min11;min2=min22;  //更新}return min1.second;}
};

相关文章:

【力扣每日一题】2023.8.10 下降路径最小和Ⅱ

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个数组&#xff0c;让我们模拟从上面第一层走到下面的最后一层&#xff0c;下降路径需要加上经过的格子的值&#xff0c;每层…...

gh-ost概述(二实践)

注意&#xff1a;只适用于拥有主键或者唯一键的表&#xff0c;不存在触发器的表 一、gh-ost的安装部署 0、yum -y install golang 1、进入官网GitHub - github/gh-ost: GitHub’s Online Schema-migration Tool for MySQL 2、下载gh-ost-master.zip包 3、解压unzip gh-ost-mast…...

临时文档3

Set接口 说一下 HashSet 的实现原理&#xff1f; HashSet 是基于 HashMap 实现的&#xff0c;HashSet的值存放于HashMap的key上&#xff0c;HashMap的value统一为PRESENT&#xff0c;因此 HashSet 的实现比较简单&#xff0c;相关 HashSet 的操作&#xff0c;基本上都是直接调…...

【OpenGauss源码学习 —— 执行算子(SeqScan算子)】

执行算子&#xff08;SeqScan算子&#xff09; 执行算子概述扫描算子SeqScan算子ExecInitSeqScan函数InitScanRelation函数ExecSeqScan函数 总结 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们尊重他人的知识产权和学术成果&#xff0c;力求遵…...

Postman中,既想传递文件,还想传递多个参数(后端)

需求:既想传文件又想传多个参数可以用以下方式实现...

跨境干货|TikTok变现的9种方法

在这个流量为王的时代&#xff0c;哪里有流量&#xff0c;哪里就有商机。TikTok作为近几年最火爆的社媒平台之一&#xff0c;在全球范围都具有一定的影响力。随着TikTok Shop等商务功能加持上线&#xff0c;更是称为跨境电商的新主场之一。 在这样的UGC平台&#xff0c;想要变…...

Grafana 曲线图报错“parse_exception: Encountered...”

问题现象 配置的Grafana图报错如下&#xff1a; 原因分析 点开报错&#xff0c;可以看到报错详细信息&#xff0c;是查询语句的语法出现了异常。 变量pool的取值为None 解决方案 需要修改变量pool的查询SQL&#xff0c;修改效果如下&#xff1a; 修改后&#x…...

idea中提示Unsupported characters for the charset ‘ISO-8859-1‘

application.properties中文注释拉黄线 &#xff0c;提示Unsupported characters for the charset ISO-8859-1 解决办法&#xff1a; 注意&#xff1a; 改完之后之前输入的中文就变成“ &#xff1f;&#xff1f;&#xff1f;”了&#xff0c;建议备份一下 1、打开setti…...

通过signtool进行数字签名和验证签名

&#xff08;一&#xff09;如何签名 SignTool.exe (Sign Tool) - .NET Framework | Microsoft Learn Using SignTool to Sign a File - Win32 apps | Microsoft Learn 签名命令行&#xff1a; signtool.exe sign /f xxx.pfx /t http://timestamp.digicert.com yyy.dll xx…...

geeemap学习总结(2)——地图底图应用

1. 加载库中已有图层 import os os.environ[HTTP_PROXY] http://127.0.0.1:8001 os.environ[HTTPS_PROXY] http://127.0.0.1:8001 # 设置中心位置/地图层级/图层加载高度&#xff0c;加载图层 import geemap Mapgeemap.Map(center[40, 100], zoom4, height600) Map# 添加已经…...

flutter 手写日历组件

先看效果 直接上代码 calendar_popup_view.dart import package:flutter/material.dart; import package:intl/intl.dart;import custom_calendar.dart; import hotel_app_theme.dart;class CalendarPopupView extends StatefulWidget {const CalendarPopupView({required th…...

C++动态规划经典试题解析之打家劫舍系列

1.前言 力扣上有几道与打家劫舍相关的题目,算是学习动态规划时常被提及的经典试题,很有代表性,常在因内大大小小的社区内看到众人对此类问题的讨论。 学习最好的方式便是归纳总结、借鉴消化,基于这个目的,本文对此类问题也做了讲解,在一些优秀思想的基础上添加了个人观…...

24届近5年东南大学自动化考研院校分析

今天给大家带来的是东南大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、东南大学 学校简介 东南大学是我国最早建立的高等学府之一&#xff0c;素有“学府圣地”和“东南学府第一流”之美誉。东南大学前身是创建于1902年的三江师范学堂。1921年经近代著名教育家…...

electron、electron-forge 安装

npm修改了registry&#xff0c;安装依旧无效 使用cnpm 倒是可以解决&#xff0c;但是 npx electron-forge import 中 Installing dependencies 使用的是npm 给出一次性解决方案&#xff1a; step1&#xff1a;切换npm的下载源&#xff0c;可以使用nrm 进行管理&#xff0c;有…...

go的strings用法

strings 是 Go 语言标准库中提供的一个包&#xff0c;用于处理字符串相关的操作。这个包包含了许多函数&#xff0c;可以用于字符串的切割、拼接、替换、查找等操作。下面是一些常用的 strings 包函数和用法示例&#xff1a; package mainimport ("fmt""string…...

echo用法、linxu课堂练习题、作业题

一、课堂练习 练习一&#xff1a; 4、普通用户修改密码&#xff1a; root修改密码&#xff1a; 5、修改主机名&#xff1a;hostnamectl hostname 主机名 查看&#xff1a;hostnamectl或者cat etc/hostname 练习二&#xff1a; 1、 mkdir /root/html touch /root/html/index.…...

WordPress使用【前端投稿】功能时为用户怎么添加插入文章标签

在使用Wordpress做前端投稿功能的时候&#xff0c;可能需要用户填写文章标签&#xff0c;在插入文章的时候很多人不知道怎么把这些标签插入进去&#xff0c;下面这篇文章来为大家带来WordPress使用前端投稿功能时插入文章标签方法。 在Wordpress里 wp_insert_post 此函数的作…...

第二章:CSS基础进阶-part1:CSS高级选择器

文章目录 一、 组合选择器二、属性选择器三、伪类选择器1、动态伪类选择器2、状态伪类选择器3、结构性伪类选择器4、否定伪类选择器 一、 组合选择器 后代选择器&#xff1a;E F子元素选择器&#xff1a; E>F相邻兄弟选择器&#xff1a;EF群组选择器&#xff1a;多个选择器…...

js 正则表达式 限制input元素内容必须以abc开头,123结尾

要通过正则表达式验证一个输入元素的内容是否以"abc"开头且以"123"结尾&#xff0c;您可以使用 ^ 表示开头&#xff0c;$ 表示结尾&#xff0c;以及适当的字符类或具体字符。以下是一个示例正则表达式&#xff1a; var regex /^abc.*123$/;上面的正则表达…...

Linux下安装nginx (tar解压版安装)

Linux下安装nginx (tar安装) 1、下载nginx 官方下载地址https://nginx.org/en/download.html 在这里插入图片描述 2.解压 解压‘nginx-1.16.1.tar.gz’到指定目录&#xff08;/usr/local/myWorkSpace&#xff09;并且重命名 命令&#xff1a; tar -xvf nginx-1.16.1.tar.gz …...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...