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

ListNode 2487. 从链表中移除节点,单调栈的应用

一、题目

1、题目描述

给你一个链表的头节点 head 。

移除每个右侧有一个更大数值的节点。

返回修改后链表的头节点 head 

2、接口描述

 
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeNodes(ListNode* head) {}
};

3、原题链接

2487. 从链表中移除节点


二、解题报告

1、思路分析

可见题目要求我们把原链表修改为一个非升序链表,那么我们只需要遍历一遍链表,维护一个单调栈存储节点,保证从栈底到栈顶单调递减,遍历完之后将栈中节点串联起来,栈底节点就是表头

2、复杂度

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

3、代码详解

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeNodes(ListNode* head) {if(!head || !(head -> next))return head;stack<ListNode*> s;s.push(head);head = head -> next;while(head){while(s.size() && head -> val > s.top() -> val)s.pop();s.push(head);head = head -> next;}while(s.size()){s.top() -> next = head;head = s.top();s.pop();}        return head;}
};

http://www.lryc.cn/news/275489.html

相关文章:

  • vue3中pdf打印问题处理
  • 如何向嵌入式设备中添加tcpdump工具
  • 伦茨科技Apple Find My认证芯片-ST17H6x芯片
  • uni-app 前后端调用实例 基于Springboot 数据列表显示实现
  • python渗透工具编写学习笔记:10、网络爬虫基础/多功能编写
  • Python武器库开发-武器库篇之子域名扫描器开发(四十一)
  • 通俗易懂的15个Java Lambda表达式案例
  • 十七:爬虫-JS逆向(上)
  • How to implement anti-crawler strategies to protect site data
  • 王国维的人生三境界,这一生至少当一次傻瓜
  • Jmeter二次开发实操问题汇总(JDK问题,jar包问题)
  • 网络安全B模块(笔记详解)- 数字取证
  • 阿里云服务器8080端口安全组开通图文教程
  • vmlinux, vmlinux.bin, bzImage; cmake的find_package(Clang)新增了哪些变量( 比较两次记录的所有变量差异)
  • webpack配置入门
  • Elasticsearch 8.X进阶搜索之“图搜图”实战
  • LLM之RAG实战(十三)| 利用MongoDB矢量搜索实现RAG高级检索
  • UI动效设计师通往高薪之路,AE设计从基础到进阶教学
  • APK多渠道加固打包笔记之360加固宝
  • 编程天赋和努力哪个更重要?
  • SpringCloud Alibaba之Nacos配置中心配置详解
  • 个人实际开发心得感悟及学习方法
  • 光速爱购--靠谱的SpringBoot项目
  • P1019 [NOIP2000 提高组] 单词接龙
  • 图解设计模式-中介者模式(Mediator)
  • 小程序面试问答(解决方案)
  • qt第三天快速回顾
  • Android 编译过程介绍,Android.mk 和 Android.bp 分析, 在源码中编译 AndroidStudio 构建的 App
  • 【C++】几种常用的类型转换
  • CCNP课程实验-07-OSPF-Trouble-Shooting