描述:

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 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-删除链表中重复的节点相关推荐

  1. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...

    一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4-&g ...

  2. 面试题18: 删除链表节点:删除链表中重复的节点

    /******************************************************************* *<剑指Offer--名企面试官精讲典型编程题>C ...

  3. python删除链表中重复的节点_剑指offer:删除链表中重复的节点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  4. python实现剑指offer删除链表中重复的节点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  5. 《剑指offer》删除链表中重复的节点

    题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后为 ...

  6. 剑指offer.删除链表中重复的节点

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留. 样例1 输入:1->2->3->3->4->4->5输出:1->2-> ...

  7. 删除链表中重复的节点

    1.题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处 ...

  8. 删除链表重复节点 python_java删除链表中重复的节点(保留一个节点)

    两种方法实现: package cn.exercise.list; import java.util.HashMap; /** * 删除链表重复节点(重复节点只保留一个) */ public clas ...

  9. python删除链表中重复的节点_删除链表中所有值与Python相同的节点的程序

    假设我们有一个单链接列表和一个目标,则在删除所有值与目标相同的节点后,我们必须返回相同的链接. 因此,如果输入类似于[5,8,2,6,5,2,9,6,2,4],则输出将为[5.8.6.5.9.6.4, ...

  10. 剑指offer 66题 -- 删除链表中重复的节点

    /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ ...

最新文章

  1. selenium启动Firefox示例
  2. 绝了!一个妹子 rm -rf 把公司整个数据库删没了
  3. 智能合约重构社会契约 (4)预言机基础说明
  4. Objective-C语法汇总
  5. C语言 | typedef
  6. Linux 终端仿真程序Putty
  7. [Apple开发者帐户帮助]七、注册设备(3)禁用或启用设备
  8. Ubuntu 20.04 LTS 发布最终 Beta 版本
  9. Web 爬虫 Apache Nutch 1.15 发布,支持 Java 10
  10. 【转】HTTP请求中的form data和request payload的区别
  11. web service中配置tcp/ip监视器
  12. 条形码类型及其字符集和长度的说明
  13. libjpeg、libpng使用方法
  14. codeblocks17.12安装及汉化
  15. 转:著名的100个管理定律点评9 - 成也细节,败也细节略
  16. Centos8 磁力链BT地址
  17. Python:数据导出到Excel(使用xlwt)
  18. 修改火狐浏览器滚动条样式
  19. Postfix邮箱部署
  20. nodejs安装npm依赖时报错

热门文章

  1. 【54期】Java序列化三连问,是什么?为什么需要?如何实现?
  2. Java简单的记账本项目
  3. RFC1951的部分翻译及原文(1/2) (转)
  4. 设计模式--模板方法模式(照旧,有类关系图)
  5. 一款在线免费的甘特图,让你轻松管理项目进度
  6. lisp画垫圈_基于DCL和AutoLISP语言开发的垫圈标准件库
  7. 容器服务(四): Kubernetes 搭建与核心原理
  8. 产品经理的职业生涯规划是怎么样的?
  9. PMSM FOC 滑膜观测器 SMO 算法
  10. CorelDRAWX4的C++插件开发(四十三)VBA的错误返回机制