每日一题(LeetCode)----链表--链表中的下一个更大节点

每日一题(LeetCode)----链表–链表中的下一个更大节点

1.题目(1019. 链表中的下一个更大节点)

    • 给定一个长度为 n 的链表 head

      对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值 严格大于 它的值。

      返回一个整数数组 answer ,其中 answer[i] 是第 i 个节点( 从1开始 )的下一个更大的节点的值。如果第 i 个节点没有下一个更大的节点,设置 answer[i] = 0

      示例 1:

      img

      输入:head = [2,1,5]
      输出:[5,5,0]
      

      示例 2:

      img

      输入:head = [2,7,4,3,5]
      输出:[7,0,5,5,0]
      

      提示:

      • 链表中节点数为 n
      • 1 <= n <= 104
      • 1 <= Node.val <= 109

2.解题思路

思路一:使用单调栈

1.我们创建一个单调栈(递减栈),这个栈中存的元素是pair类型的,pair的第一个变量存的是遍历到节点的下标,第二个变量存的是遍历到的节点的值
2.遍历链表,我们每遍历到一个节点,先把当前位置看成是零,放入到一个数组(这里我们用的是动态数组)中,然后看栈中是否有元素
如果栈中有元素,看栈顶元素的值是否小于当前节点的值
如果小于,那么我们通过当前栈顶元素的第二个变量,找到数组应该修改的那个元素的下标,然后那个元素修改为当前节点的值,将当前栈顶元素删除,再重新看栈顶元素与当前元素的关系进行操作,当然如果栈中没有元素了,就不进行操作了。继续接下来的操作
如果大于,就继续接下来的操作(这是一个递减栈,如果栈顶元素都大于当前节点的的值了,那栈中其他元素也一定大于当前节点的值了)
如果栈中没有元素,继续接下来的操作
3.最后将当前节点的下标和当前节点的值作为一个整体放到栈中,继续遍历链表的下一个节点
4.遍历完链表之后,得到的数组就是我们的最终答案

3.写出代码

思路一的代码
class Solution {
public:vector<int> nextLargerNodes(ListNode* head) {vector<int> ans;//pair的第一个变量存的是遍历到节点的下标,第二个变量存的是遍历到的节点的值stack<pair<int,int>> sta;int index=-1;ListNode* cur=head;while(cur){ans.push_back(0);index++;while(!sta.empty()&&sta.top().second<cur->val){ans[sta.top().first]=cur->val;sta.pop();}sta.push(make_pair(index,cur->val));cur=cur->next;}return ans;}
};

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

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

相关文章

停车管理系统

1 用户信息管理 2 车位信息管理 3 车位费用设置 4 停泊车辆查询 5 车辆进出管理 6 用户个人中心 7 预定停车位 8 缴费信息 9 业务逻辑详解 1 用户停车&#xff1a;user用户登录&#xff0c;在预定停车位菜单&#xff0c;选择一个车位点击预定即可 2 车辆驶出&#xff1a;admin…

【ArcGIS Pro微课1000例】0038:基于ArcGIS Pro的人口密度分析与制图

文章目录 一、人口密度二、人口密度分析1. 点密度分析2. 核密度分析三、结果比对一、人口密度 人口密度是指单位土地面积上居住的人口数,通常以每平方千米或每公顷内的常住人口为单位计算。人口密度同资源、经济密切结合,因此,科学准确地分析人口密度的分布情况,对合理制定…

kubernetes使用nfs创建pvc部署mysql stateful的方法

kubernetes创建的pod默认都是无状态的&#xff0c;换句话说删除以后不会保留任何数据。 所以对于mysql这种有状态的应用&#xff0c;必须使用持久化存储作为支撑&#xff0c;才能部署成有状态的stateful. 最简单的方法就是使用nfs作为网络存储&#xff0c;因为nfs存储很容易被…

无需公网IP,使用MCSM面板一键搭建我的世界Minecraft服务器联机游戏

文章目录 前言1.Mcsmanager安装2.创建Minecraft服务器3.本地测试联机4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射内网端口 5.远程联机测试6. 配置固定远程联机端口地址6.1 保留一个固定TCP地址6.2 配置固定TCP地址 7. 使用固定公网地址远程联机 前言 MCSManager是一个…

基于springboot网上超市管理系统

基于springboot网上超市管理系统 摘要 随着互联网的快速发展&#xff0c;电子商务行业迎来了蓬勃的发展&#xff0c;网上超市作为电子商务的一种形式&#xff0c;为消费者提供了便利的购物体验。本文基于Spring Boot框架&#xff0c;设计和实现了一个网上超市管理系统&#xff…

图的邻接矩阵,邻接表的C语言实现(408真题)

图的邻接矩阵 数据结构定义 #define MAXV 50;//顶点数目的最大值 typedef struct{int vex[MAX]; //顶点表 int edge[MAXV][MAXV]; //邻接矩阵 int edgeNum,vexNum; //图中实际的边数和顶点数 }MGraph;初始化 void Matrix_Init(MGraph *Mgraph) {int v1, v2;//存储有边的…

Redis key的类型以及命令

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

[AutoSAR 存储] 汽车智能座舱的存储需求

公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《AutoSAR 存储》 <<<< 返回总目录 <<<< 1 智能座舱的发展&#xff1a; 1.1 发展历史 车辆信息娱乐系统的发展可以分为三个阶段。 机械化阶段 在上世纪90年代&#xff0c;车辆仪表盘…

动手学深度学习(四)---多层感知机

文章目录 一、理论知识1.感知机2.XOR问题3.多层感知机4.多层感知机的从零开始实现 【相关总结】1.torch.randn()2.torch.zeros_like() 一、理论知识 1.感知机 给定输入x,权重w&#xff0c;和偏移b,感知机输出&#xff1a; 2.XOR问题 感知机不能拟合XOR问题&#xff0c;他…

【2023 云栖】阿里云田奇铣:大模型驱动 DataWorks 数据开发治理平台智能化升级

云布道师 本文根据 2023 云栖大会演讲实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;田奇铣 | 阿里云 DataWorks 产品负责人 演讲主题&#xff1a;大模型驱动 DataWorks 数据开发治理平台智能化升级 随着大模型掀起 AI 技术革新浪潮&#xff0c;大数…

2017年8月3日 Go生态洞察:贡献者峰会探秘

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

信息学奥赛一本通1331:【例1-2】后缀表达式的值

1331&#xff1a;【例1-2】后缀表达式的值 时间限制: 10 ms 内存限制: 65536 KB 提交数: 54713 通过数: 13547 【题目描述】 从键盘读入一个后缀表达式&#xff08;字符串&#xff09;&#xff0c;只含有0-9组成的运算数及加&#xff08;&#xff09;、减&#xf…

Flutter开发警告Constructors in ‘@immutable‘ classes should be declared as ‘const‘

文章目录 警告信息报错代码警告原因修改后的代码 警告信息 Flutter开发遇到如下警告 Constructors in ‘immutable’ classes should be declared as ‘const’. 报错代码 class TaskWidget extends StatefulWidget {final String title;final bool isChecked;final int ord…

Java中static、final、static final的区别

文章目录 finalstaticstatic final final final可以修饰&#xff1a;属性&#xff0c;方法&#xff0c;类&#xff0c;局部变量&#xff08;方法中的变量&#xff09; final修饰的属性的初始化可以在编译期&#xff0c;也可以在运行期&#xff0c;初始化后不能被改变。 final修…

案例-某验四代滑块反爬逆向研究二

系列文章目录 第一部分 案例-某验四代滑块反爬逆向研究一 第二部分 案例-某验四代滑块反爬逆向研究二 文章目录 系列文章目录前言一、js文件加载先后顺序二、每次刷新都会初始化 device_id, 所以追栈可以知道它从哪执行的三、删除node中的检测点&#xff08;vm忽视&#xff09…

Cesium-terrain-builder编译入坑详解

本以为编译cesium-terrian-tools编译应该没那么难&#xff0c;不想问题重重&#xff0c;不想后人重蹈覆辙&#xff0c;也记录下点点滴滴。 目前网上存在的cesium代码版本主要有两个分支&#xff1a; 原始网站【不能生成layer文件&#xff0c;且经久不更新&#xff0c;使用gdal…

[PyTorch][chapter 64][强化学习-DQN]

前言&#xff1a; DQN 就是结合了深度学习和强化学习的一种算法&#xff0c;最初是 DeepMind 在 NIPS 2013年提出&#xff0c;它的核心利润包括马尔科夫决策链以及贝尔曼公式。 Q-learning的核心在于Q表格&#xff0c;通过建立Q表格来为行动提供指引&#xff0c;但这适用于状态…

YOLOv5改进 | 添加SE注意力机制 + 更换NMS之EIoU-NMS

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。为提高算法模型在不同环境下的目标识别准确率&#xff0c;提出一种基于改进 YOLOv5 深度学习的识别方法&#xff08;SE-NMS-YOLOv5&#xff09;&#xff0c;该方法融合SE&#xff08;Squeeze-and-Excitation&#xff09;注…

【pytest】Hooks函数之统计测试结果(pytest_terminal_summary)

前言 用例执行完成后&#xff0c;我们希望能获取到执行的结果&#xff0c;这样方便我们快速统计用例的执行情况。 也可以把获取到的结果当成总结报告&#xff0c;发邮件的时候可以先统计测试结果&#xff0c;再加上html的报告。 pytest_terminal_summary 关于TerminalReporter…

Python pandas数据分析

Python pandas数据分析&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其…