【LeetCode每日一题】2487. 从链表中移除节点(调用栈+递归+翻转链表)

2024-1-3

文章目录

      • [2487. 从链表中移除节点](https://leetcode.cn/problems/remove-nodes-from-linked-list/)
            • 方法一:调用栈
            • 方法二:递归
            • 方法三:翻转链表

2487. 从链表中移除节点

在这里插入图片描述

方法一:调用栈

1.将所有节点按顺序压入栈中

2.从栈顶依次查看元素

3.当栈顶节点的值大于新链表表头的值,将该节点插入新链表的表头

4.否则移除该节点

    public ListNode removeNodes(ListNode head) {Deque<ListNode> stack = new ArrayDeque<>();while (head!=null){stack.push(head);head = head.next;}while (!stack.isEmpty()){if (head==null||stack.peek().val>=head.val){stack.peek().next = head;将该节点插入新链表的表头head = stack.peek();//表头前移}stack.pop();}return head;}
方法二:递归

1.节点为空返回

2.不为空,对右侧节点进行判断

3.比右侧节点小,移除当前结点,返回下一个结点

4.比右侧节点大,返回当前结点

    public ListNode removeNodes(ListNode head) {if (head == null){return null;}head.next = removeNodes(head.next);if (head.next!=null && head.val < head.next.val){return head.next;}else {return head;}}
方法三:翻转链表

1.翻转链表、要求改为:移除每一个左侧有一个更大数值的节点。

2.不断移除右结点,除非右结点的值大于等于当前结点

3.再翻转回来

    public ListNode removeNodes3(ListNode head) {head = reverse(head);ListNode cur = head;while (cur.next!=null){if (cur.val>cur.next.val){//当前值比右边值大,删除右边结点cur.next = cur.next.next;}else {cur = cur.next;}}return reverse(head);//翻转回来}public ListNode reverse (ListNode head){//翻转链表ListNode dummy = new ListNode();while (head!=null){ListNode cur = head;head = head.next;cur.next = dummy.next;dummy.next = cur;}return dummy.next;}

点击移步博客主页,欢迎光临~

偷cyk的图

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

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

相关文章

网页爬虫对于网络安全有哪些影响?

在当今信息爆炸的时代&#xff0c;网络已经成为人们获取信息、交流思想和开展业务的重要平台。然而&#xff0c;随着网络的普及和技术的不断发展&#xff0c;网络安全问题也日益凸显&#xff0c;其中网页爬虫对网络安全的影响不容忽视。本文将就网页爬虫对网络安全的影响进行深…

三分钟入门基于Visio的流程图绘制操作

Visio是微软旗下的一款流程图及其他框图绘制工具&#xff0c;有着广泛应用&#xff0c;其高效的展示功能和便捷快速的操作也广受认可。今天&#xff0c;我们就以最基本的流程图绘制为例来一起探索一下Visio的基础功能和用法。 声明&#xff1a;这篇教程从实用角度出发&#xf…

二、UI文件设计与运行机制

一、UI文件设计与运行机制 1、创建工程 2、添加控件&#xff0c;实现按钮点击 &#xff08;1&#xff09;添加控件 &#xff08;2&#xff09;添加信号和槽 2、分析项目结构 test_02test_02.pro Qt工程文件Headerswidget.h 设计的窗体类的头文件Sourcesmain.cpp 主程序入…

C++_find 统计一个单词 在一段文中出现的次数

注解: 使用y.find(x, n)从位置n开始在字符串y中查找子串x首次出现的位置。如果找到了子串x&#xff0c;则find()函数会返回该子串在y中的起始索引&#xff08;位置&#xff09;&#xff0c;否则返回-1&#xff08;或npos&#xff09;表示未找到。当find()函数返回非-1值时&…

DHTMLX Spreadsheet v5.1.1 Crack

DHTMLX Spreadsheet 5.1 具有新主题、简化的数字格式本地化、与框架的实时集成演示等 推出 DHTMLX Spreadsheet v5.1。新版本提供了一组有用的功能&#xff0c;这对开发人员和最终用户都有吸引力。 首先&#xff0c;新的电子表格版本提供了 4 个内置主题&#xff0c;可以根据您…

VS2022 创建windows服务-Windows Service

vs2022 2023等版本出现&#xff0c;似乎被忘记的早期的Windows Service服务是如何创建的呢&#xff1f;本文介绍了如何用新版本VS进行C#创建、安装、启动、监控、卸载简单的Windows Service 的内容步骤和注意事项。windows服务可以在windows中自动运行。 一、创建一个Windows …

Netty实战(待完善)

Netty组件 1. Bootstrap, ServerBootstrap Netty 中 Bootstrap 类是客户端程序的启动引导类&#xff0c;ServerBootstrap 是服务端启动引导类。 2. NioEventLoop, NioEventLoopGroup NioEventLoop 中维护了一个线程和任务队列&#xff0c;支持异步提交执行任务&#xff0c;…

全面开花!聚铭网络入选《ISC 2023数字安全创新能力全景图谱》10大细分领域

日前&#xff0c;《ISC 2023数字安全创新能力全景图谱》重磅出炉&#xff0c;聚铭网络凭借多元化的产品和卓越的创新能力&#xff0c;成功上榜全景图10大细分领域&#xff0c;多项细分领域的入围再一次彰显了聚铭网络过硬的综合安全实力。 据悉&#xff0c;此次全景图是ISC平台…

修改选择框el-select样式,显示及下拉样式

修改选择框el-select样式,显示及下拉样式 .el-input__inner {background: rgba(25, 126, 195, 0.2);border: none;color: #fff; }.el-select-dropdown {background: rgba(19, 73, 104, 0.79);border: 2px solid #48e3ff;border-radius: 0; }.el-popper .popper__arrow {display…

厦门大学OpenHarmony技术俱乐部开创“1+N”新模式,加速推动产学研融合

12月29日,OpenHarmony技术俱乐部再添重将——在多方见证下,厦门大学OpenHarmony技术俱乐部在翔安校区益海嘉里楼报告厅正式揭牌成立,现场出席领导及师生代表近千人。 成立仪式现场 OpenHarmony技术俱乐部 携手厦门大学共绘开源生态新图景 OpenHarmony是由开放原子开源基金…

可视化工作流任务管理

​Leangoo领歌一款永久免费的看板管理工具。提供私有部署。 Leangoo领歌覆盖了敏捷研发全流程&#xff0c;它提供端到端敏捷研发管理解决方案&#xff0c;包括小型团队敏捷开发&#xff0c;规模化敏捷SAFe&#xff0c;Scrum of Scrums大规模敏捷&#xff0c;涵盖敏捷需求管理、…

OpenFeign相关面试题及答案(2024)

1、什么是OpenFeign&#xff0c;它如何简化远程服务调用&#xff1f; OpenFeign是一个声明式的Web服务客户端&#xff0c;它使得编写HTTP客户端变得更加容易。它属于Spring Cloud Netflix项目的一部分&#xff0c;可以与Spring Boot应用轻松集成。通过使用OpenFeign&#xff0…