J276-删除链表中重复的节点
描述:
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5
数据范围:链表长度满足 ,链表中的值满足
进阶:空间复杂度 ,时间复杂度
例如输入{1,2,3,3,4,4,5}时,对应的输出为{1,2,5},对应的输入输出链表如下图所示:
解题思路:通过三指针法解决
通过prev记录节点,方便找删除以后的节点,slow是删除的头节点,fast为尾节点,其中要考虑全为1和节点全为空的情况,并且找到要删除的节点时,需要用循环来单独释放空间,具体思路如下图所示
struct ListNode* deleteDuplication(struct ListNode* pHead ) {struct ListNode*fast=pHead->next; struct ListNode*slow=pHead;struct ListNode*prev=NULL;if(pHead==NULL){return NULL;}while(fast){if(fast->val!=slow->val)//不等的情况{prev=slow;fast=fast->next;slow=slow->next;}else {while((fast!=NULL)&&(slow->val==fast->val)){fast=fast->next;if(prev==NULL)//此时prev没有移动,要删除的点从头开始 {pHead=fast;//直接置头,说明是一个相同的节点 }else//说明不是从头开始 {prev->next=fast;}} //释放空间while(slow!=fast){struct ListNode *p=slow;slow=slow->next;free(p);}if(fast!=NULL){fast=fast->next;}}}return pHead;
}
J276-删除链表中重复的节点相关推荐
- python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...
一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4-&g ...
- 面试题18: 删除链表节点:删除链表中重复的节点
/******************************************************************* *<剑指Offer--名企面试官精讲典型编程题>C ...
- python删除链表中重复的节点_剑指offer:删除链表中重复的节点
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- python实现剑指offer删除链表中重复的节点
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- 《剑指offer》删除链表中重复的节点
题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后为 ...
- 剑指offer.删除链表中重复的节点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留. 样例1 输入:1->2->3->3->4->4->5输出:1->2-> ...
- 删除链表中重复的节点
1.题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处 ...
- 删除链表重复节点 python_java删除链表中重复的节点(保留一个节点)
两种方法实现: package cn.exercise.list; import java.util.HashMap; /** * 删除链表重复节点(重复节点只保留一个) */ public clas ...
- python删除链表中重复的节点_删除链表中所有值与Python相同的节点的程序
假设我们有一个单链接列表和一个目标,则在删除所有值与目标相同的节点后,我们必须返回相同的链接. 因此,如果输入类似于[5,8,2,6,5,2,9,6,2,4],则输出将为[5.8.6.5.9.6.4, ...
- 剑指offer 66题 -- 删除链表中重复的节点
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ ...
最新文章
- selenium启动Firefox示例
- 绝了!一个妹子 rm -rf 把公司整个数据库删没了
- 智能合约重构社会契约 (4)预言机基础说明
- Objective-C语法汇总
- C语言 | typedef
- Linux 终端仿真程序Putty
- [Apple开发者帐户帮助]七、注册设备(3)禁用或启用设备
- Ubuntu 20.04 LTS 发布最终 Beta 版本
- Web 爬虫 Apache Nutch 1.15 发布,支持 Java 10
- 【转】HTTP请求中的form data和request payload的区别
- web service中配置tcp/ip监视器
- 条形码类型及其字符集和长度的说明
- libjpeg、libpng使用方法
- codeblocks17.12安装及汉化
- 转:著名的100个管理定律点评9 - 成也细节,败也细节略
- Centos8 磁力链BT地址
- Python:数据导出到Excel(使用xlwt)
- 修改火狐浏览器滚动条样式
- Postfix邮箱部署
- nodejs安装npm依赖时报错
热门文章
- 【54期】Java序列化三连问,是什么?为什么需要?如何实现?
- Java简单的记账本项目
- RFC1951的部分翻译及原文(1/2) (转)
- 设计模式--模板方法模式(照旧,有类关系图)
- 一款在线免费的甘特图,让你轻松管理项目进度
- lisp画垫圈_基于DCL和AutoLISP语言开发的垫圈标准件库
- 容器服务(四): Kubernetes 搭建与核心原理
- 产品经理的职业生涯规划是怎么样的?
- PMSM FOC 滑膜观测器 SMO 算法
- CorelDRAWX4的C++插件开发(四十三)VBA的错误返回机制