题目描述

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

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};
*/
class Solution {
public:ListNode* deleteDuplication(ListNode* pHead){if(pHead==NULL)return pHead;ListNode* pPreNode=NULL;ListNode* pNode=pHead;while(pNode!=NULL){ListNode* pNext=pNode->next; bool needDelet=false;    //定义不需要删除标记needDelet,为false时,不需要删除,为true时,需要删除。if(pNext!=NULL&&pNode->val==pNext->val)needDelet=true;               if(!needDelet)  //当前结点值和下一结点值不相等,不需要删除{pPreNode=pNode;pNode=pNext;}else      //当前结点值和下一结点值相等{ListNode* pToBeDel=pNode;int value=pNode->val;//while(pToBeDel!=NULL&&pToBeDel->val==pNode->val)  //错误,因为pNode在变while(pToBeDel!=NULL&&pToBeDel->val==value){ pNext=pToBeDel->next;delete pToBeDel;pToBeDel=NULL;pToBeDel=pNext;}if(pPreNode==NULL)    //如果头结点被删除了pHead=pNext;elsepPreNode->next=pNext;pNode=pNext;}}return pHead;}
};

剑指offer面试题[57]-删除链表中重复的结点相关推荐

  1. 剑指offer(C++)-JZ76:删除链表中重复的结点(数据结构-链表)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回 ...

  2. 剑指offer——面试题51:数组中重复的数字

    剑指offer--面试题51:数组中重复的数字 Solution1: 20180910更新.利用数组做一次hash映射,时间复杂度为O(n)O(n)O(n),空间复杂度O(n)O(n)O(n). cl ...

  3. [剑指offer]面试题15:链表中倒数第k个结点

    面试题15:链表中倒数第k个结点 题目:输入一个链表,输出该链表中倒数第 k 个结点.为了符合大多数人的习惯,本题从1 开始计数,即链表的尾结点是倒数第1 个结点.例如一个链表有6个结点,从头结点开始 ...

  4. 剑指Offer - 面试题18. 删除链表的节点

    1. 题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val ...

  5. 剑指offer面试题15:链表中倒数第K个节点

    题目:输入一个链表,输出该链表的倒数第K个节点.为了符合大多数人的习惯,本题从1开始计数,即链表尾节点是倒数第一个节点. 解题思路: 解法一:一般情况下,单向链表无法从后一个节点获取到它前面的节点,可 ...

  6. 剑指offer面试题18. 删除链表的节点(双指针)(链表)

    题目描述 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 思路 详见链接 代码 class Solution:def deleteNode(self, ...

  7. 剑指offer——面试题15:链表中倒数第k个结点

    Solution1: 典型的双指针题目.但要考虑到很多边界条件! 注意此题中陷阱很多,具体看书中解释 20181008修改代码 /* struct ListNode {int val;struct L ...

  8. 剑指offer——面试题57:删除链表中重复的结点

    剑指offer--面试题57:删除链表中重复的结点 Solution1: 删两遍,自己想的破算法.理论上时间复杂度也是O(n)O(n)O(n),并非最优解. /* struct ListNode {i ...

  9. 剑指offer——面试题56:链表中环的入口

    剑指offer--面试题56:链表中环的入口 Solution1: 非常经典的快慢指针套路题.下面这个链接讲解的很详细.其实问题的关键在于为什么快指针的速度一定是慢指针的2倍,3倍或4倍行不行?? 快 ...

最新文章

  1. 取出list中属性_你是否用过List<T>和List<?>?
  2. python制作excel表格-excel表格中怎么制作一份燃尽图表
  3. 怎样在 Github 上找自己喜欢的东西?
  4. 【小米面试题】-给定一个具体时间,计算时针与分针之间的角度
  5. android java广播,[原]Android应用程序发送广播(sendBroadcast)的过程分析
  6. One-Page AlphaGo --十分钟看懂 AlphaGo 的核心算法!
  7. 一步一步写STL:空间配置器(1)
  8. Java读书笔记(8)-单例模式
  9. Mac ndk编译for Android
  10. C++中的->用于赋值
  11. java继承和接口连接怎么用_继承与接口的使用
  12. python开发cms_Wagtail介绍 — 基于Django的Python CMS
  13. 国内外20多个科研论文下载神器(科研小白成长记 番外篇)
  14. Golang的广东11选5出售协程调度机制与GOMAXPROCS性能调优
  15. Flashpaper序列号
  16. 输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)
  17. MySQL的基本操作(五)
  18. 首席新媒体运营黎想教程:电商运营必须掌握的5个公式
  19. 唯一插件化Replugin源码及原理深度剖析--插件的安装、加载原理
  20. 60 Linux 常用 命令

热门文章

  1. Round trip
  2. Tcp keepalive详解
  3. 分布式红锁的加锁的lua底层设计原理
  4. 13muduo_base库源码分析(四)
  5. javamailsender注入失败_Springboot 之 JavaMailSender发送电子邮件
  6. centos使用python_Centos7使用Python3
  7. java中地图查询比较慢,在java中缓慢的地图
  8. js 调用c语言函数看,web前端:JS高级---函数中的this的指向,函数的不同调用方式...
  9. AdneneBoumessouer / MVTec-Anomaly-Detection学习笔记
  10. Qt信号与槽传递QList动态数组