【力扣每日一题】力扣2478从链表中移除节点

题目来源

2478.从链表中移除节点

题目描述

给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。

示例

示例1:

输入:head = [5,2,13,3,8]

输出:[13,8]

解释:需要移除的节点是 5 ,2 和 3 。

  • 节点 13 在节点 5 右侧。
  • 节点 13 在节点 2 右侧。
  • 节点 8 在节点 3 右侧。

示例2:

输入:head = [1,1,1,1]

输出:[1,1,1,1]

解释:每个节点的值都是 1 ,所以没有需要移除的节点。

提示

  • 给定列表中的节点数目在范围 [1, 10^5] 内
  • 1 <= Node.val <= 100000

解题思路

使用栈来解决这个问题

  1. 若栈为空,元素入栈;
  2. 若栈不为空,且栈顶元素不小于当前元素,元素入栈;
  3. 若栈不为空,且栈顶元素小于当前元素,进行出栈操作,直到栈空或者栈顶元素不小于当前元素,元素入栈。

代码

java代码使用双链表模拟栈

public class Solution {public ListNode removeNodes(ListNode head) {DoubleLink dhead = new DoubleLink();  // 栈底DoubleLink trail = dhead;             // 栈顶dhead.val = head;                     // 第一个元素入栈ListNode current = head.next;         // 当前元素while (current != null) {if (current.val > trail.val.val) { // 如果当前元素大于已经入栈的元素,出栈到栈顶元素大于当前元素while (trail != null && trail.val.val < current.val){trail = trail.pre;}}if (trail == null) {                // 如果变为空栈,直接入栈dhead.val = current;dhead.pre = null;trail = dhead;}else {                             // 将元素入栈,并且连接指针trail.next = new DoubleLink();trail.next.pre = trail;trail = trail.next;trail.val = current;trail.pre.val.next = current;}current = current.next;}return dhead.val;}
}
// 题目指定的链表结构
class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
// 用来模拟栈的双链表
class DoubleLink{public DoubleLink pre;// 前驱public ListNode val; // 内容public DoubleLink next; // 后继
}

c++代码使用数组模拟栈

class Solution {
public:ListNode* removeNodes(ListNode* head) {ListNode** nodeArray = new ListNode*[10000];nodeArray[0] = head;int index = 0;ListNode* current = head->next;while (current != nullptr) {if (current->val > nodeArray[index]->val) {while (index >= 0 && nodeArray[index]->val < current->val) {index--;}}nodeArray[++index] = current;if (index > 0) {nodeArray[index - 1]->next = current;}current = current->next;}return nodeArray[0];}
};

结果

java结果

c++结果

c++的大佬也太强了吧

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

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

相关文章

针对CSP-J/S的冲刺练习:Day 4 提高题

一、审题 时间限制&#xff1a;1000ms 内存限制&#xff1a;256MB 平均AC率&#xff1a;7.89% 题目描述 输出一个n*n大小的螺旋矩阵。 螺旋矩阵的样子&#xff1a; 输入描述 共一行&#xff0c;一个正整数n&#xff0c;表示矩阵变长的长度 输出描…

【电路笔记】-电感器

电感器 文章目录 电感器1、概述2、电感器的时间常数3、电感器示例1 电感器是一种由线圈组成的无源电气元件&#xff0c;其设计目的是利用电流通过线圈而产生的磁力和电力之间的关系。 1、概述 在本中&#xff0c;我们将看到电感器是一种电子元件&#xff0c;用于将电感引入到电…

使用Apache Commons Chain实现命令模式

第1章&#xff1a;引言 大家好&#xff0c;我是小黑。今天咱们来聊聊一个挺有意思的话题&#xff1a;如何用Apache Commons Chain实现命令模式。首先&#xff0c;得先搞明白什么是命令模式&#xff0c;对吧&#xff1f;命令模式&#xff0c;它其实是一种设计模式&#xff0c;主…

嵌入式科普(9)vscode无法跳转和恢复默认配置

一、目的/概述 二、解决办法 2.1 使能Intelli Sense Engine 2.2 vscode恢复默认配置 2.3 c/c与clangd冲突 嵌入式科普(9)vscode无法跳转和恢复默认配置 一、目的/概述 1、2024年的第一天突然vscode无法跳转,莫名其妙 2、尝试了各种设置和插件都无效&#xff0c;卸…

Ubuntu18.04 安装 qt 5.15.2

安装qt 1.下载 在线安装包 使用国内镜像源在线安装QT(2023.3.25更新)_qt国内镜像-CSDN博客 2.安装 注意&#xff1a;我安装时 勾选 Qt Design studio 会导致报错&#xff0c;直接不勾选。 Ubuntu 18.04 安装Qt5.15.2开发环境_ubuntu安装qt5.15.2-CSDN博客 3.配置

【持续学习系列(八)】《Continual Learning Through Synaptic Intelligence》

一、论文信息 1 标题 Continual Learning Through Synaptic Intelligence 2 作者 Friedemann Zenke, Ben Poole, Surya Ganguli 3 研究机构 Stanford University 二、主要内容 论文探讨了如何在人工神经网络&#xff08;ANNs&#xff09;中实现持续学习&#xff08;con…

英飞凌TC3xx之一起认识GTM(十)详细说说GTM子模块TIM

英飞凌TC3xx之一起认识GTM(十)详细说说GTM子模块TIM 1 TIM简介1.1 输入源选择寄存器INPUTSRCx1.2 外部捕捉源选择寄存器 EXTCAPSRCx2 TIM通道2.1 TIM通道架构2.2 TIM通道模式3 总结编者话:GTM的定时器输入模块TIM是经常被使用的模块,因为它简单易用。它可以接入多种源,包括…

Qt元对象系统Meta-Object System

元对象系统 元对象系统是一个基于标准C++的扩展,为Qt提供了信号与槽机制、实时类型信息、动态属性系统。 元对象系统的三个基本条件:类必须继承自QObject、类声明Q_OBJECT宏、元对象编译器moc。 Qt元对象编译器(Moc)是Qt框架中的一个重要工具,用于处理Qt特有的元对象系统…

快递物流怎么寄最便宜?你一定要知道的5个方法 !

家人们&#xff0c;临近年关&#xff0c;大家的钱包是不是鼓鼓的了&#xff0c;难免的亲戚朋友之间会相互寄送一些东西&#xff0c;所以最近因为需要经常寄快递物流&#xff0c;小编所以特地整理了5个我们平时个人寄快递便宜的方法攻略&#xff0c;推荐第五个&#xff0c;实用干…

【Java集合篇】HashMap 在 get 和 put 时经过哪些步骤

HashMap在get和put时经过哪些步骤? ✔️ 典型解析✔️get方法✔️put方法✔️ 拓展知识仓✔️ HashMap如何定位key✔️ HashMap定位tablelndex的骚操作作✔️HashMap的key为null时&#xff0c;没有hashCode是如何存储的?✔️ HashMap的value可以为null吗? 有什么优缺点讷? …

群太多,有什么办法可以定时、批量、标签分类群发的吗?

你或许会遇到微信群组过多而导致管理困难等问题吗&#xff1f;对于如何高效地管理众多微信群组&#xff0c;实现分类管理同样具有不可忽视的重要性。 实际上&#xff0c;对此问题小编收到了部分朋友的疑问&#xff1a;“既然可以为微信好友添加标签&#xff0c;那为何不能为微…

数据库定义和操作语句的重要语法

数据库&#x1f4ca;的10种语法 数据查询语句 select : 用于从数据库中检索数据。 select column1, column2,.... from table_name where condition; select distinct : 用于从数据库中检索唯一的数据值。 select DISTINCT column1, clumn2,... from table_name; 工作原理…

torch.meshgrid和np.meshgrid的区别

numpy中meshgrid&#xff1a; 把数组a当作一行&#xff0c;再根据数组b的长度扩充行。 把数组b当作一列&#xff0c;再根据数组a的长度扩充列。 torch中meshgrid&#xff1a; 把数组a当作一列&#xff0c;再根据数组b的长度扩充列。 把数组b当作一行&#xff0c;再根据数组a的…

CAVER: Cross-Modal View-Mixed Transformer for Bi-Modal Salient Object Detection

目录 一、论文阅读笔记&#xff1a; 1、摘要&#xff1a; 2、主要贡献点&#xff1a; 3、方法&#xff1a; 3.1 网络的总体框架图&#xff1a; 3.2 Transformer-based Information Propagation Path (TIPP) 3.3 Intra-Modal/Cross-Scale Self-Attention (IMSA/CSSA) Q1…

onxxruntime使用cuda以及tensorrt进行加速

1、版本匹配 版本需要匹配&#xff0c;不然运行会报错 2、onnxruntime之tensorrt加速 方式一&#xff1a; OrtTensorRTProviderOptions trt_options{}; trt_options.trt_max_workspace_size 2147483648; trt_options.trt_max_partition_iterations 10; trt_options.trt_m…

kali-Linux安装ARL灯塔教程以及timeout of 20000ms exceeded 的解决方法

FLAG&#xff1a;别和妈妈诉苦&#xff0c;她帮不上&#xff0c;也睡不着。 专研方向: docker&#xff0c;ARL资产灯塔系统 每日emo&#xff1a;天冷了&#xff0c;你还在坚持吗&#xff1f; 欢迎各位与我这个菜鸟交流学习 kali安装ARL灯塔教程 1.安装docker环境&#xff0c;…

【MySQL】orderby/groupby出现Using filesort根因分析及优化

序 在日常的数据库运维中&#xff0c;我们可能会遇到一些看似难以理解的现象。比如两个SQL查询语句&#xff0c;仅仅在ORDER BY子句上略有不同&#xff0c;却造成了性能的天壤之别——一个飞速完成&#xff0c;一个则让数据库崩溃。今天就让我们围绕这个问题&#xff0c;深入剖…

LeetCode每日一题 | 1944. 队列中可以看到的人数

文章目录 队列中可以看到的人数题目描述问题分析程序代码&#xff08;Golang 版本&#xff09; 队列中可以看到的人数 题目描述 原题链接 有 n 个人排成一个队列&#xff0c;从左到右 编号为 0 到 n - 1 。给你以一个整数数组 heights &#xff0c;每个整数 互不相同&#xff…

Mysql的安装配置教程(非常详细)从零基础入门到精通,看完这一篇就够了

首先简单概述分为几个步骤&#xff1a; 一、下载Mysql 二、安装Mysql 三、验证Mysql安装是否成功 四、 配置环境变量 五、验证配置环境变量是否成功 一、下载Mysql 要在Windows或Mac上安装MySQL&#xff0c;首先从MySQL官方网站下载最新的MySQL Community Server版本&am…

QCharView使用

QChart是 QGraphicsWidget的子类。 QCharView是QGraphicsView的子类 QCharView概念:title、系列、图标Chart、视图 说明: 需要添加Qt组件charts 在使用QChart或者QChartView之前需要添加宏定义QT_CHARTS_USE_NAMESPACE &#xff08;其实是使用了命名空间&#xff09;&#xff…