139 删除链表中的重复元素II

问题描述:存在一个按照升序排列的链表,给你这个链表的头结点head,请你删除链表中所有存在数字重复情况的节点,只保留链表中没有出现的数字,返回的结果同样按升序的结果链表。

求解思路:双指针求解,定义两个指针开头均指向头结点,若下一个节点与当前节点不同,同时前进,若相同则第二个指针向前走,一直到遇到不同的节点,此时让第二个节点的next指向第二个指针,第一个指针前移,继续进行判断。直到都指向null。

public ListNode deleteDupItem(ListNode root)
{
ListNode first=root;
ListNode second=root;
while(first!=null&&second!=null)
{
if(first.next.val!=first.val)
{
first=first.next;
second=second.next;
}else
{
while(second!=null&&second.val==first.val)
{
second=second.next;
}
first.next=second;
first=first.next;
second=first;
}
}
​​​​​​​return root;
}

递归求解:如果当前元素和下一个元素相同,则删除下一个元素,指向下下个元素,直到完全处理完毕。

public void dfs(ListNode root)
{
if(root==null){return;}
if(root.val==root.next.val&&root.next!=null)
{
root.next=root.next.next;
dfs(root.next);
}else if(root.next==null||root.val!=root.next.val)
{
dfs(root.next);
}
}
public ListNode Dfs(ListNode root)
{
dfs(root);
​​​​​​​return root;
}

单指针求解:定义一个初始为root的单指针,如果该指针下一个指针指向为null,则表示处理完毕,若不为null,且相同,则该指针的next为next的next,否则前进。

public ListNode singlePoint(ListNode root)
{
ListNode single=root;
while(root!=null)
{
if(root.next==null){return root;}
if(root.val==root.next.val)
{
root.next=root.next.next;
}else
{
root=root.next;
}
}
​​​​​​​return root;
}

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

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

相关文章

常用的gpt-4 prompt words收集4

1. it poses a certain risk to my work 这对我来说是一个风险点 2. one point to note is that 需要说的一个问题是 3. What is the English phonetic transcription of ‘emoji’? emoji的音标是什么? 4. it would be best if you can insert some proper …

Docker(十)Docker Compose

作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! Docker Compose 项目 Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式…

Vue diff原理

✨ 专栏介绍 在当今Web开发领域中,构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架,正是为了满足这些需求而诞生。它采用了MVVM架构模式,并通过数据驱动和组件化的方式,使…

NIO和netty的常用类

Netty的NIO的常用概念 ServerBootstrap ServerBootstrap 是一个用于帮助配置和启动服务器的类。它是Netty中用于创建服务器端应用程序的主要入口点 Channel 在计算机网络编程中,Channel(通道) 是一种抽象概念,代表着数据在源和…

Golang leetcode28 找出字符串中第一个匹配项的下标 KMP算法详解

文章目录 找出字符串中第一个匹配项的下标 leetcode28 串的模式匹配问题暴力求解使用KMP模式匹配算法KMP算法简述 KMP算法的代码实现 找出字符串中第一个匹配项的下标 leetcode28 串的模式匹配问题 暴力求解 func strStr(haystack string, needle string) int { L : len(need…

wayland(wl_shell) + egl + opengles 最简实例

文章目录 前言一、ubuntu 上相关环境准备1. ubuntu 上安装 weston2. 确定ubuntu 上安装的opengles 版本3. 确定安装的 weston 是否支持 wl_shell 接口二、窗口管理器接口 wl_shell 介绍二、代码实例1.egl_wayland_demo.c2. 编译和运行2.1 编译2.2 运行总结参考资料前言 本文主…

UE5 C++学习笔记 FString FName FText相互转换

1.FString 是UE里的String。最接近std::string, 唯一可以修改的字符串类型。性能更低 TEXT(string) TEXT宏,作用是将字符串转换成Unicode,切记UE中使用字符串输出要使用该宏 2. FName 是UE里特有的类型。它更注重于表示名称不区分大小写,不…

基于taro搭建小程序多项目框架,记重点了!!!

前言 为什么需要这样一个框架,以及这个框架带来的好处是什么? 从字面意思上理解:该框架可以用来同时管理多个小程序,并且可以抽离公用组件或业务逻辑供各个小程序使用。当你工作中面临这种同时维护多个小程序的业务场景时&#…

web架构师编辑器内容-完成属性设置的优化

对于业务组件来说,其属性是有很多的,如果把所有属性都平铺在页面上,就会非常长,而且想要更改其中的某些属性,可能需要向下滚动很久才能找到,对于UI的交互不是很友好,需要对属性的不同特性进行分…

nginx反向代理实现浮动ip配置

技术调研,浅浅学习一下。 需求分析 需求:主备两个集群,对外要提供一个vip供访问;同一时间只会访问一个集群,主挂了切备提供服务。 分析: vip方案:直接手动配也行,keepalived也行&…

KDJ指标的算法、原理和特性

KDJ的完整中文名称是随机摆动指标,是短线交易者最常用的指标之一。作为应用最广泛的指标之一,KDJ的用法网上随处可见,但大部分介绍都只会告诉你超买超卖,金叉死叉,详细点的讲讲背离和钝化,至于为什么这么用…

填空题如何去掉答案?教你3个去除小妙招

填空题如何去掉答案?在日常学习过程中,将写过的试卷填空题去掉答案,是一种非常有效的学习方法,可以帮助学生们更好地巩固和扩充知识点。首先,去掉答案可以让学生们重新审视题目,加深对知识点的理解。其次&a…

【RT-DETR有效改进】Google | EfficientNetV2一种超轻量又高效的网络 (轻量化网络)

前言 大家好,我是Snu77,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本,同时修改内容也支持Re…

鸿蒙开发笔记(二十): 常用组件 TextInput/TextArea, 弹窗,视频播放Video

1. 文本输入 TextInput/TextArea TextInput为单行输入框、TextArea为多行输入框。通过以下接口来创建。 TextArea(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextAreaController})TextInput(value?:{placeholder?: ResourceStr, text?: R…

小型洗衣机怎么用?实用的迷你洗衣机推荐

由于我们的内衣、内裤和袜子等等贴身小件衣物的清洁频率比一般的衣物要高。而且,如果我们人工手洗的话,不仅会大大浪费了我们的时间,而且还不能进行对这些贴身的以为进行深层消毒和除菌。这种情况下,就得需要一台专门用于清洗内衣…

常用的gpt-4 prompt words收集3

1. The picture is a bit blurry, please identify it carefully, don’t rush. 图片有点模糊请仔细看不要着急 2. Please organize the code in the picture above into a complete tutorial, elaborating on its functions in detail along with the code. 将图片上的代码…

minio在文件服务器上显示的是文件夹和xl.meta的文件形式

在linux上安装好minio之后,上传文件测试,文件存储目录下显示的文件是xl.meta形式的,并不是与预想中的实体文件形式,原因是因为新安装的minio的版本比较新,貌似2022年6月份之后的版本就改成这种形式的文件了。为了后续便…

数据结构·顺序表应用

本节应用是要用顺序表实现一个通讯录,收录联系人的姓名、性别、电话号码、住址、年龄 ​​​​​​​ 顺序表的实现在上一节中已经完成了,本节的任务其实就是应用上节写出来的代码的那些接口函数功能,做出来一个好看的,可…

设计类标书制作方法

一、引言 在当今竞争激烈的市场环境中,设计类标书制作显得尤为重要。它不仅是展示创意和实力的舞台,更是决定项目归属的关键环节。 二、标书制作要点 1.明确设计要求与目标 在制作设计类标书前,务必深入了解招标方的需求、期望和目标。这…

晨控CK-FR03-EC与欧姆龙NX系列EtherCAT通讯连接说明手册

晨控CK-FR03-EC与欧姆龙NX系列EtherCAT通讯连接说明手册 晨控CK-FR03-EC是一款基于射频识别技术的高频RFID标签读卡器,读卡器工作频率为13.56MHZ,支持对I-CODE 2、I-CODE SLI等符合ISO15693国际标准协议格式标签的读取。 读卡器同时支持标准工业通讯协…