每日一题(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.hqwc.cn/news/225627.html

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

相关文章

一文带你读懂骨传导耳机危害性都有哪些!以及如何选择骨传导耳机!

如果说正常的使用骨传导耳机&#xff0c;是不会有危害的。 那么如何正确的使用骨传导耳机呢&#xff1f; 1、音量不要太大 骨传导耳机是通过震动人体骨骼来传递声音的&#xff0c;而在传递过程中&#xff0c;会出现漏音情况&#xff0c;而漏出的声音&#xff0c;便会通过耳道…

服务器中启动和停止项目

服务器中启动和停止项目 一、前言二、使用命令启动和关闭项目1、启动项目2、停止项目 三、使用可执行脚本启动和关闭项目1、启动项目2、停止项目 一、前言 在服务器上部署项目&#xff0c;一般就是将项目挂在后台&#xff0c;如果是微服务首选docker-compose&#xff0c;但如果…

Selenium 学习(0.15)——软件测试之测试用例设计方法——场景法

1、场景法的基本概念 场景法是黑盒测试中一种重要的测试用例设计方法。它通过场景描述业务流程&#xff0c;包括基本流和备选流设计测试用例遍历软件系统功能&#xff0c;从而验证其正确性。 通过运用场景对系统的功能点或业务流程进行描述&#xff0c;从而提…

Spring Security 6.x 系列(6)—— 显式设置和修改登录态信息

一、前言 此篇是对上篇 Spring Security 6.x 系列&#xff08;5&#xff09;—— Servlet 认证体系结构介绍 中4.9章节显式调用SecurityContextRepository#saveContext进行详解分析。 二、设置和修改登录态 2.1 登录态存储形式 使用Spring Security框架&#xff0c;认证成功…

2019年9月26日: Go生态洞察:发布Go模块

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

华为拆分零部件业务,长安入股,赛力斯接洽中

作者 |德新 编辑 |王博 11月26日&#xff0c;长安汽车官宣与华为在智能汽车零部件业务上的投资与合作&#xff1a; 华为拟成立一家新的公司&#xff0c;并将其在智能汽车解决方案业务上的核心技术和资源注入新公司&#xff0c;长安汽车及关联方有意投资该新公司。 参照目前长…

【扫雷】C语言实现扫雷小游戏

扫雷 游戏资源介绍游戏功能介绍游戏代码编写教程游戏功能测试自动排雷测试地雷标记测试取消标记测试踩雷判定测试重复游戏测试胜利判定测试 头文件游戏主体文件用户主体文件 游戏资源介绍 本次对之前的扫雷游戏进行了重新编写与更新&#xff0c;在此次的游戏实现中新增加了剩余…

Open Feign 源码解析(二) --- 如何发送http请求

Open Feign 源码解析二 如何发送http请求&#xff1f; 如何组件化&#xff1f; 定义接口 public interface Client {Response execute(Request request, Options options) throws IOException; }是否存在已有的方案&#xff1f; 1&#xff09;rest template http client o…

优思学院|六西格玛:中国企业迈向国际舞台的必经之路

六西格玛质量管理在中国的企业中是实用和广泛运用的。六西格玛管理是一种系统的过程改进方法&#xff0c;通过对现有过程进行界定、测量、分析、改进和控制的流程来提高质量、降低成本。中国的一些企业已经取得了显著的经济效益&#xff0c;并且至少有25&#xff05;以上的世界…

【JavaEE初阶】 HTTP协议和使用Fiddler抓包

文章目录 &#x1f38d;HTTP协议是什么&#xff1f;&#x1f340;应用层协议&#xff08;HTTP&#xff09;存在的意义&#x1f384;HTTP 协议的工作过程&#x1f334;HTTP 协议格式&#x1f333;Fiddler抓包工具的使用&#x1f6a9;如何抓HTTPS的包&#xff1f; &#x1f38b;抓…

操作系统校招知识点总结

文章目录 前言1. 操作系统概述1.1 操作系统的四大特征&#xff08;并共虚异&#xff09;1.2 操作系统的主要功能&#xff1f;1.3 动态链接库和静态链接库的区别&#xff1f;1.4 并发和共享之间的关系&#xff1f;1.5 中断和异常的概念&#xff1f; 2. 进程与线程2.1 进程和线程…

SELinux零知识学习三十七、SELinux策略语言之约束(1)

接前一篇文章:SELinux零知识学习三十六、SELinux策略语言之角色和用户(7) 四、SELinux策略语言之约束 SELinux对策略允许的访问提供了更严格的约束机制,不管策略的allow规则如何。 1. 近距离查看访问决定算法 为了理解约束的用途,先来看一下SELinux Linux安全模块(Lin…