力扣82题删除排序链表中的重复元素

82题删除排序链表中的重复元素

题目描述

给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。
在这里插入图片描述

题目分析

  • 这个题需要返回已排序链表,我们需要考虑一种情况就是头结点为重复元素,那么我们把头结点删除之后没有办法再找到之后的节点了,这个时候我们需要设置一个虚头节点,来保证即使头结点删除了我们也能找到之后的节点
  • 我们需要新建一个指针cur指向虚头节点
  • 明确删除节点的操作就是将他的前驱节点与后继节点相连接,所以我们需要保证cur->next 与cur->next->next不为空,这个顺序不能乱
  • 当找到cur->next->val=cur->next->next->val的时候,我们需要将这个值记录一下,用p记录一下这个值,这个值在后续可能还会出现的,如果cur->next->val!=cur->next->next->val的话,cur往后走一步
  • 再次遍历后续链表将cur->next不为空且cur->next->val的值等于我们标记的值证明我们找到了重复的值,cur->next=cur->next->next 进行删除操作
  • 我们这样就完成了这个过程,返回h->next即可。
    -在这里插入图片描述
    创建虚头节点
    在这里插入图片描述
    这时cur->next->val=cur->next->next->val
    这时cur->next->val=cur->next->next->val
    将3标记为x,进行删除操作
    将3标记为x,进行删除操作
    这时cur的位置并没有发生改变,cur->next->val=cur->next->next->val=4
    这时cur的位置并没有发生改变,cur->next->val=cur->next->next->val=4
    cur->next指向5的时候,cur->next->next为空,跳出循环,完成整个删除过程
    [cur->next指向5的时候,cur->next->next为空,跳出循环,完成整个删除过程

代码

class Solution {
public:ListNode* deleteDuplicates(ListNode* head) {if(!head)return head;ListNode*h=new ListNode();h->next=head;ListNode*cur=h;while(cur->next&&cur->next->next){if(cur->next->val==cur->next->next->val){int p=cur->next->val;while(cur->next&&cur->next->val==p){cur->next=cur->next->next;}}else{cur=cur->next;}}return h->next;}
};

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

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

相关文章

学习C语言的重要性以及如何学好

配套视频:https://www.bilibili.com/video/BV1kw4m1Q7AV/?spm_id_from333.999.0.0 一、C语言在互联网领域重要的开源项目 https://github.com/mysql/mysql-server 数据库开源项目【互联网重型开源项目】 编程语言:C/C/ASM 部分汇编代码 开源项目核心…

【汇编】算术指令

一、加法指令 (一)各加法指令的格式及操作 加法指令可做字或字节运算 (1)加法指令 ADD 格式:ADD DST,SRC执行的操作:(DST) ← (SRC)(DST) (2)带进位加法指令 ADC 格式&#xf…

除自身以外数组的乘积[中等]

优质博文:IT-BLOG-CN 一、题目 给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32位整数范围内。请不要使用除法&#xff…

【SQL】SQL常见面试题总结(2)

目录 1、增删改操作1.1、插入记录(一)1.2、插入记录(二)1.3、插入记录(三)1.4、更新记录(一)1.5、更新记录(二)1.6、删除记录(一)1.7、…

Spring初学入门(跟学笔记)

一、Spring概述 Spring是一款主流的Java EE轻量级开源框架。 Spring的核心模块:IoC(控制反转,指把创建对象过程交给Spring管理 )、AOP(面向切面编程,在不修改源代码的基础上增强代码功能) 二、…

常用五款文件加密软件|好用加密软件工具分享

随着信息化时代的到来,数据安全问题日益凸显,加密软件应运而生,成为了保护数据安全的重要手段。在市场上,众多加密软件层出不穷,各有千秋。本文将介绍几款常用的加密软件,分析它们的优缺点,以帮…

使用JasperReport工具,生成报表模版,及通过JavaBean传参,常见问题及建议

1.下载JasperReport工具 下载地址:社区版 - Jaspersoft 社区 邮箱:lorettepatri.ckoa5434gmail.com 密码:Zx123456. 2.工具使用方法注意 1.一次参数需要在左下角Parameters中新建,直接拖转右上角的TextField不会自动新建参数,到头来还是要在Parameters中新建 2.循环参数需…

Kexp 动态展示 k8s 资源对象依赖关系

kexp[1] 旨在以可视化的方式帮助用户理解和探索 Kubernetes 的能力。 适用场景: 学习和探索 Kubernetes 的功能。 应用开发,提供每个应用的对象图预设。 控制器和操作器的开发,支持动态对象图。 即将推出类似 Postman 的 Kubernetes API …

如何组织 Vue 项目

介绍 在启动 Vue 项目时,思考项目结构至关重要。主要考虑因素是预期项目的规模。在本篇博文中,我将探讨适用于不同规模 Vue 项目的各种结构。这个考虑与康威定律相吻合: “设计系统的组织受限于产生这些组织沟通结构的设计。” - 梅尔康威 基…

linux防火墙的操作

linux防火墙的操作 前言1查看防火墙状态2暂时关闭防火墙3永久关闭防火墙4开启防火墙5开启指定端口6关闭指定端口7立即生效8查看开放的端口 前言 systemctl是管理linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作 firewall-cmd是linux中专门用于控…

shell脚本之sort,uniq,tr,cut,sphit,paste,ecal与正则表达式

sort命令 uniq命令 tr命令 cut命令 sphit命令 paste命令 ecal命令 正则表达式 sort命令 sort命令---以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序 比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序…

Centos7使用kubeadm搭建k8s集群(一主两从)----(mac版)

一、环境准备 1、下载centos7镜像 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 下载地址: centos安装包下载_开源镜像站-阿里云 选择对应的版本即可,我下载的:CentOS-7-x86_64-DVD-2207-02.iso 2、使用VirtualBox安装centos 选择新建&#xff0c…

集成了Gemini的Android Studio,如虎添翼

今天将Android Studio升级到最新版(Jellyfish)。发现在new features中有一条: Code suggestions with Gemini in Android Studio 打开路径为: View > Tool Windows > Gemini 支持多国语言,英文、中文都能正确理解…

C# 快速排序(QuickSort)

QuickSort是一种基于分而治之算法的排序算法,它选择一个元素作为主元,并通过将主元放置在已排序数组中的正确位置,围绕所选主元对给定数组进行分区。 快速排序是如何工作的? QuickSort中的关键过程是partition()。分区的…

二手手机行业商家如何利用二手机店erp进行破局?

在数字化和AI发展越发先进的的今天,二手手机市场正迎来前所未有的变革。途渡科技精心打造的超机购ERP管理软件,凭借其独特的智能化、高效化特点,正在引领这场变革,为二手手机商家提供全面、深度的数字化管理解决方案。二手手机商家…

【FFmpeg】Filter 过滤器 ② ( 裁剪过滤器 Crop Filter | 裁剪过滤器语法 | 裁剪过滤器内置变量 | 裁剪过滤器常用用法 )

文章目录 一、裁剪过滤器1、裁剪过滤器简介2、裁剪过滤器语法3、裁剪过滤器内置变量4、裁剪过滤器示例5、裁剪过滤器应用6、裁剪过滤器图示 二、裁剪过滤器常用用法1、裁剪指定像素的视频区域2、裁剪视频区域中心正方形 - 默认裁剪3、裁剪视频区域中心正方形 - 手动计算4、裁剪…

Postman历史版本安装与runner测试

前言 实际上就是笔者本地做demo,postman使用了最新版本,本身也没问题,不过postman不支持不登录做runner测试了,很多功能必须登录账号才能使用,否则只能使用http工具发送的能力,而postman本身就是一个简单工…

每周题解:牛的旅行

题目描述 牛的旅行 农民John的农场里有很多牧区。有的路径连接一些特定的牧区。一片所有连通的牧区称为一个牧场。但是就目前而言,你能看到至少有两个牧区不连通。 现在,John想在农场里添加一条路径 ( 注意,恰好一条 )。对这条路径有这样的…

nuget局域网在线包制作,nuget打包,nuget打自己的包

目录 首先编辑类库项目的.csproj文件信息 打包项目 设置局域网nuget包 Nuget包管理器--->程序包源 微软帮助文档: NuGet 及其功能介绍 | Microsoft Learn https://learn.microsoft.com/zh-cn/nuget/what-is-nuget 承载自己的 NuGet 源 https://learn.mic…

Python 小抄

Python 备忘单 目录 1.语法和空格 2.注释 3.数字和运算 4.字符串处理 5.列表、元组和字典 6.JSON 7.循环 8.文件处理 9.函数 10.处理日期时间 11.NumPy 12.Pandas 要运行单元格,请按 ShiftEnter 或单击页面顶部的 Run(运行)。 1.语法和空格…