LeetCode.82 删除排序链表中的重复元素 二

LeetCode.82 删除排序链表中的重复元素 二
题目

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* deleteDuplicates(struct ListNode* head) {if(head == NULL) return head;struct ListNode* _head = malloc(sizeof(struct ListNode));_head->next = head;  //头结点struct ListNode* r = _head,*p = _head->next,*q = _head->next->next;while(q != NULL){if(p->val == q->val){while(q!=NULL && p->val == q->val) {q = q->next;}//printf("%d  %d\n",r->val,q->val);r->next = q; //删除p = q;if(q!=NULL)q = q->next;}else{r = r->next;p = p->next;q = q->next;}}if(r == _head){return r->next;}else{return _head->next;}
}

思路:
1,提供的是无空头链表,需要加一个头结点来统一操作
2,使用三个工作指针
r:记录前一个节点,方便删除操作
p:记录此基准节点
q:前进节点
两种情况:
一 如果p与q不同,则p,q,r,均前进;
二 如果p与q相同,则q前进,直到与p不同,此时删除r与q之间的节点即可。

返回时注意,如果r始终未移动,说明相同节点均在前半部分,返回 r->next,
否则,返回原 head。

总结:此类题原理不难,要小心细节,比如加头结点、注意next越界操作,还有不要吝啬声明变量,重复使用next可能会把自己绕晕。

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

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

相关文章

Gradle 安装及源替换详解

在软件开发的过程中,Gradle 是一个强大且灵活的构建工具,被广泛应用于 Java、Android、Kotlin 等项目。本文将为您提供 Gradle 的安装步骤以及如何更换源的详细说明和代码示例。 一. Gradle 安装步骤 以下是在 Windows 操作系统上安装 Gradle 的步骤&am…

帆软报表11.0.19增加postgres数据源方案

项目使用postgres数据库,帆软报表集成开发时需要手工增加该数据源。 https://help.fanruan.com/finereport/doc-view-2563.html 但增加数据源后测试报告无此驱动,经查看文档,现在是通过驱动管理来上传, 但新版又不允许上传驱动JAR…

「HDLBits题解」Always casez

本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益 题目链接:Always casez - HDLBits // synthesis verilog_input_version verilog_2001 module top_module (input [7:0] in,output reg [2:0]…

ai智能语音机器人系统的话术怎样设置效果比较好

设置一个AI智能语音机器人的话术,以实现最佳效果,涉及以下几个关键方面: 1. 自然语言处理(NLP):AI机器人的话术需要能够理解和处理用户的自然语言输入。使用NLP技术来识别语义、意图和实体,并针…

Pointnet++改进注意力机制系列:全网首发SE通道注意力机制 |即插即用,实现有效涨点!

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入SE注意力机制,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤

走迷宫(c语言)

前言: 制作一个迷宫游戏是一个有趣的编程挑战。首先,我们需要设计一个二维数组来表示迷宫的布局,其中每个元素代表迷宫中的一个格子。我们可以使用不同的值来表示空格、墙壁和起点/终点。接下来,我们需生成迷宫。在生成迷宫的过程…

C# Guid生成唯一值用例

GUID(全局唯一标识符)是一个128位的数字,通常用来唯一标识信息。GUID 的生成算法保证了在相同的时空条件下,基本上不会生成重复的值。这是因为GUID的生成算法结合了多种不同的信息,包括时间戳、计算机的 MAC 地址、随机…

2024年【上海市安全员C3证】模拟考试题及上海市安全员C3证模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 2024年上海市安全员C3证模拟考试题为正在备考上海市安全员C3证操作证的学员准备的理论考试专题,每个月更新的上海市安全员C3证模拟考试题库祝您顺利通过上海市安全员C3证考试。 1、【多选题】《上海市建设…

STC15系列单片机:定时器/计数器16位自动重装载模式

一、定时器与计数器的理解 STC15系列单片机内部有5个16位定时器/计数器,分别是T0、T1、T2、T3、T4。 定时器与计数器,东西还是同一个东西,只是用法和功效不一样,就好比黄瓜,既可以内服也可以外敷,黄瓜还是…

深入理解 go chan

go 里面,在实际程序运行的过程中,往往会有很多协程在执行,通过启动多个协程的方式,我们可以更高效地利用系统资源。 而不同协程之间往往需要进行通信,不同于以往多线程程序的那种通信方式,在 go 里面是通过…

Rust-所有权和移动语义

什么是所有权 拿C语言的代码来打个比方。我们可能会在堆上创建一个对象,然后使用一个指针来管理这个对象: Foo *p make_object("args");接下来,我们可能需要使用这个对象: use_object(p);然而,这段代码之…

继承、修饰符、工具类、jar包

目录 1.继承 2.修饰符 3.工具类 4.jar包的制作与使用 1.继承 是什么 1.面向对象的三大特征之一(封装、继承、多态) 2.可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。 继承的格式 public class F…

Camtasia2024最新版本如何进行电脑录制屏幕?

在现在的网络互联网时代,越来越多的人走上了自媒体的道路。有些自媒体人会自己在网络上录制精彩视频,也有一些人会将精彩、热门的电影剪辑出来再加上自己给它的配音,做成大家喜欢看的电影剪辑片段。相信不管大家是自己平时有独特的爱好也好、…

瑞吉外卖笔记系列(1) —— 环境配置,后台登录和退出的功能实现

本文档主要介绍软件开发整体流程和瑞吉外卖项目,开发环境搭建步骤,以及简单的后台系统功能实现 文章目录 一、软件开发整体介绍1.1软件开发流程1.2 角色分工1.3 软件环境 二、瑞吉外卖项目介绍2.1 项目介绍2.2 产品原型展示2.3 技术选型2.4 功能架构2.5 …

目标检测应用场景—数据集【NO.25】牛行为检测数据集

写在前面:数据集对应应用场景,不同的应用场景有不同的检测难点以及对应改进方法,本系列整理汇总领域内的数据集,方便大家下载数据集,若无法下载可关注后私信领取。关注免费领取整理好的数据集资料!今天分享…

Stream流递归查询部门树

Java 递归查询树是很常见的功能,也有很多写法,小编这里记录stream流递归部门树写法,自从小编用上stream流之后,是爱不释手,的确是个不错的好东西,话不多说,直接上代码 第一步:先创建…

docker下载时报错 /usr/local/bin/docker-compose: 1: cannot open html: No such file

docker 下载时报错 /usr/local/bin/docker-compose: 1: cannot open html: No such file /usr/local/bin/docker-compose: 2: Syntax error: redirection unexpected, 在网上查找了一些解决方法都不对,最后,通过删除/usr/local/bin/docker-co…

arrow,一个神奇的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个神奇的 Python 库 - arrow。 Github地址:https://github.com/arrow-py/arrow 日期和时间处理是许多应用程序中的常见任务,但在 Python 中&#xf…

【备战蓝桥杯】——Day1

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-xKn7nmq36s9pgUXR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

容器化postgres备份策略

文章目录 1. 策略和背景1.1 背景1.2 备份策略 2. docker-compose的修改2.1 挂载备份目录2.2 备份脚本3.3 重启容器 3. 定时任务 1. 策略和背景 1.1 背景 使用docker-compose管理的postgres数据库需要备份工作目录在 /data/postgres下 1.2 备份策略 要备份的库 shu_han 库 每…