Leetcode.1019 链表中的下一个更大节点

news2024/11/16 19:25:52

题目链接

Leetcode.1019 链表中的下一个更大节点 Rating : 1571

题目描述

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

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

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

示例 1:

在这里插入图片描述

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

示例 2:

在这里插入图片描述

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

提示:

  • 链表中节点数为 n
  • 1 < = n < = 1 0 4 1 <= n <= 10^4 1<=n<=104
  • 1 < = N o d e . v a l < = 1 0 9 1 <= Node.val <= 10^9 1<=Node.val<=109

解法:单调栈

对于每一个结点 n o d e node node ,我们考虑 它 是哪些结点的 下一个更大的结点

在这里插入图片描述

对于 结点 y y y来说,它是 结点 x 1 , x 2 , x 3 , x 4 x1,x2,x3,x4 x1,x2,x3,x4下一个更大节点。当我们把结点 x 1 , x 2 , x 3 , x 4 x1,x2,x3,x4 x1,x2,x3,x4的下一个更大结点记录下来之后,这些结点就没用了,我们就可以把它们弹出去。

所以我们实际上维护的是一个 底大顶小的单调栈。当我们弹出栈顶元素的时候,就对每一个位置的下一个最大节点做更新。为了方便更新,我们需要记录下标。

时间复杂度: O ( n ) O(n) O(n)

C++代码:

using PII = pair<int,int>;

class Solution {
public:
    vector<int> nextLargerNodes(ListNode* head) {
        vector<int> ans;
        //节点值 和 对应得下标
        stack<PII> stk;

        while(head != nullptr){
            while(!stk.empty() && stk.top().first < head->val){
                ans[stk.top().second] = head->val;
                stk.pop();
            }

            stk.emplace(head->val,ans.size());
            ans.push_back(0);
            head = head->next;
        }

        return ans;
    }
};

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

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

相关文章

[Python工匠]输出②数值与字符串

2.1 基础知识 2.1.1 数值基础 在Python中&#xff0c;一共存在三种内置数值类型&#xff1a;整型&#xff08;int&#xff09;、浮点型&#xff08;float&#xff09;和复数类型&#xff08;complex&#xff09;。 在大多数情况下&#xff0c;我们只需要用到前两种类型&#x…

SAR ADC系列23:异步SAR逻辑

异步sar逻辑的引入&#xff1a; 原因1&#xff1a;提高转换速度 ■ 同步时钟从第一个比较周期到最后一个比较周期长度都是相等的。对于Latch比较器&#xff0c;信号幅度越小&#xff0c;比较时间越长&#xff08;参考latch时域响应那一节&#xff09;。为了保证比较器…

Linux串口出厂测试工具与使用说明

1、说明 本文针对Linux系统上如何对各类串口硬件进行出厂测试进行硬件连接和软件使用说明&#xff0c;提供的软件测试工具wchsertest&#xff0c;适用于USB、PCI、PCIe转串口设备等、同样也适用于原生ttyS串口。 2、串口测试硬件连接 在测试前&#xff0c;需要制作单独的硬件…

寸照换底色技巧大全,超详细图文教程

在日常的设计工作中&#xff0c;我们常常需要将图片的背景色进行修改&#xff0c;以适应不同的场景和需求。其中最常用的方法就是寸照换底色技巧。本文将为大家介绍一些常见的寸照换底色技巧&#xff0c;并提供超详细的图文教程&#xff0c;帮助大家轻松完成这项任务。 一、使…

2023最新面试题-Java-6

1. Date API Java 8 在包java.time下包含了一组全新的时间日期API。新的日期API和开源的Joda-Time库差不多&#xff0c;但 又不完全一样&#xff0c;下面的例子展示了这组新API里最重要的一些部分&#xff1a; Clock类提供了访问当前日期和时间的方法&#xff0c;Clock是时区敏…

springboot加载命令行参数ApplicationArguments

往期文章 springcloud整合knike4j聚合微服务接口文档 spring源码 - 条件注解ConditionnalOnClass的原理分析 springboot项目实现导出pdf功能&#xff0c;这也太简单了吧 目录 文章目录往期文章目录一、介绍二、通过应用程序参数获取配置1. 通过bean获取应用程序参数2. 通过V…

在外web浏览器远程访问jupyter notebook服务器

文章目录前言视频教程1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口5. 固定公网地址转载自远控源码文章&#xff1a;公网远程访问jupyter notebook【cpolar内网穿透】 前言 Jupyter Notebook&#…

我现在必须new一个对象!!!

目录 前言 1.new 2.delete 3.底层逻辑 4.定位new 5.对比 前言 &#x1f383;之前在使用C语言的时候&#xff0c;我们便使用 malloc 和 calloc 等函数进行动态内存的开辟。但 C 之中又引入了两个操作符 new 和 delete 来代替C语言中的函数进行动态内存的管理。下面就一起…

苏州源特VPT87DDF01B 隔离变压器 小体积/SMD/3000VDC 隔离

1 产品特点  小体积隔离变压器  隔离电压 3000VDC  工作温度&#xff1a;-40~125℃&#xff08;包含产品温升&#xff09;  存储温度&#xff1a;-55~125℃  SMD 表贴安装  回流焊温度&#xff1a;峰值温度≤250℃&#xff08;10s&#xff09;  回流焊次数&#…

Softing新版HART多路复用器软件支持西门子控制器

用于访问配置和诊断数据的HART多路复用器软件——Softing smartLink SW-HT&#xff0c;现在支持西门子的ET200远程IO和FDT/DTM接口。 smartLink SW-HT是一个基于Docker容器的软件应用。通过该软件&#xff0c;用户可以快速地访问以太网远程IO的HART设备&#xff0c;并且无需额外…

【Linux】进程间通信之管道(pipe)

文章目录前言为什么要进程间通信进程间通信的理论依据管道管道的原理创建匿名管道管道的特点管道的场景利用管道控制子进程命名管道命名管道的打开规则命名管道和匿名管道的区别用命名管道实现server和client通信前言 大家好久不见&#xff0c;今天开始我们将进入进程间通信章…

redis高可用方案:主从复制+哨兵模式,经典案例:一主二从三哨兵,及springboot集成配置

Redis高可用方案&#xff1a;主从复制哨兵模式 经典案例&#xff1a;一主二从三哨兵&#xff0c;及springboot集成配置 第一.配置 1.主节点配置&#xff08;redis.conf&#xff09; # 主节点配置 仅展示必要配置 redis.conf # 保护模式设置为关&#xff0c;方便其他节点访问…

推荐几款炫酷的 MySQL 可视化管理工具!好用到爆!!

MySQL 的管理维护工具非常多&#xff0c;除了系统自带的命令行管理工具之外&#xff0c;还有许多其他的图形化管理工具&#xff0c;工具好用是一方面&#xff0c;个人的使用习惯也很重要&#xff0c;这里介绍 13 款 MySQL 图形化管理工具&#xff0c;供大家参考。 1&#xff1a…

vite .env.test环境使用ant design vue ,打包后a-date-picker控件无法选择日期

前端开发后台管理系统&#xff0c;常用的UI库当属Element UI和 Ant Design Vue&#xff0c;但是前段时间遇到一个奇葩问题&#xff0c;在这里记录一下&#xff0c;防止小伙伴们踩坑。 后台系统&#xff0c;大家肯定都用过时间控件&#xff0c;本期我们使用的是ant design vue&…

2道关于chan的面试题

题目一: 下面关于通道描述正确的是: 1.读nil chan会触发panic 2.写nil chan会触发panic 3.读关闭的chan会触发panic 4.写关闭的chan会触发panic解答&#xff1a;这个提涉及到2个知识点&#xff0c;操作nil的chan会怎么样&#xff0c;操作关闭的chan会怎么样&#xff0c;下面我…

双目相机测距原理

双目相机测距是一种常用的计算机视觉技术&#xff0c;它利用两个摄像头同时拍摄同一场景&#xff0c;通过测量两个摄像头视野中同一物体在图像上的像素差异&#xff0c;从而计算出物体距离的方法。 具体原理如下&#xff1a; 双目相机的构成 双目相机由两个摄像头组成&#…

用ChatGPT怎么赚钱?普通人用这5个方法也能赚到生活费

ChatGPT在互联网火得一塌糊涂&#xff0c;因为它可以帮很多人解决问题。比如&#xff1a;帮编辑人员写文章&#xff0c;还可以替代程序员写代码&#xff0c;帮策划人员写文案策划等等。ChatGPT这么厉害&#xff0c;能否用它来赚钱呢&#xff1f;今天和大家分享用ChatGPT赚钱的5…

Cesium关于3Dtiles的细节分享

介绍 介绍一下Cesium中有关3dTiles的奇淫技巧&#xff0c;存在一些埋坑的地方&#xff0c;以下内容仅为自己摸索的细节和方法&#xff0c;仅供参考&#xff0c;若有更好的办法欢迎讨论 通用快速获取feature中包含的属性信息 有时候需要快速获得3dTiles中的feature中的属性信…

deb文件如何安装到iphone方法分享

Cydia或同类APT管理软件在线安装 Cydia或同类APT管理软件在线安装,这个是最佳的安装方式,因为通常无需考虑依赖关系,但缺点是对网络的要求比较高;命令行中以dpkg-iXXX.deb的形式安装,好处是可以以通配符一次性安装多个deb,而且也可以直接看到脚本的运行状况和安装成功/失…

执行命令行程序测试自动化

这几天有一个小工具需要做测试&#xff0c;是一个命令行工具&#xff0c;这个命令行工具有点类似mdbg等命令行工具&#xff0c;即程序运行后&#xff0c;在命令行等待用户敲入的命令&#xff0c;处理命令并显示结果&#xff0c;再继续等待用户敲入新的命令。 原来的测试用例都…