题目描述

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

思路

这题目有两个思路上的坑,首先链表是没有头结点的,其次是只要出现重复的,就都要删除,和我们之前去重的算法不太一样。

我们先新建一个头结点,模拟成为带有头结点的链表,最后再删去即可,这样可以极大简化操作。边界问题就是移动两个指针即可,注意边界条件的处理。

AC代码

class Solution {public:ListNode* deleteDuplication (ListNode* pHead) {if (pHead == nullptr || pHead->next == nullptr) {return pHead;}auto head = new ListNode(-1);auto pre = head;pre->next = pHead;auto p = pHead;auto q = pHead->next;while (p != nullptr) {if (q != nullptr && p->val == q->val) {int val = p->val;while (p != nullptr && p->val == val) {delete p;p = q;if (q != nullptr) {q = q->next;}}pre->next = p;} else {pre = pre->next;p = p->next;if (p != nullptr) {q = p->next;}}}if (head->next != nullptr) {auto tmp = head->next;delete head;head = tmp;} else {delete head;head = nullptr;}return head;}
};

剑指offer之删除链表中重复的结点相关推荐

  1. 剑指offer:删除链表中重复的结点

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

  2. 【算法】剑指offer - JZ76 删除链表中重复的结点

    题目链接 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 分析 1.确定去重的范围,采用 前开后闭 的方法. 2.增加一个头结点,统一操作. (pre ...

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

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

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

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

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

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

  6. 【LeetCode】剑指 Offer 18. 删除链表的节点

    [LeetCode]剑指 Offer 18. 删除链表的节点 文章目录 [LeetCode]剑指 Offer 18. 删除链表的节点 一.双指针 一.双指针 本题删除值为 val 的结点需分为两步: ...

  7. 【算法】剑指 Offer 18. 删除链表的节点

    1.概述 剑指 Offer 18. 删除链表的节点 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: he ...

  8. 【剑指 Offe】剑指 Offer 18. 删除链表的节点

    目录标题 算法汇总 题目 关键点 代码 1.解体方法 思路 代码 时间和空间复杂度 2.解题方法,如暴力法 思路 代码 时间和空间复杂度 算法汇总 以下是所有算法汇总,包括GitHub源码地址链接:力 ...

  9. 不带头节点的链表有哪些缺点_14. 删除链表中重复的结点

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

最新文章

  1. 牛逼了!一周内咸鱼疯转 3.6w 次,最终被所有大厂封杀!
  2. Jquery常用操作:checkbox、select取值,radio、checkbox、select选中及其相关
  3. 【Matlab】矩阵中选取任意子矩阵
  4. MySQL探秘(五):InnoDB锁的类型和状态查询
  5. Lintcode165 Merge Two Sorted Lists solution 题解
  6. 如何从几何角度上理解方程组只有一个解_深度科普---电磁波(三):无激励下的真空中的Maxwell方程组的解...
  7. android 打包相关问题记录
  8. CSS3---4.伪元素选择器
  9. mysql gui 分区_一文彻底搞懂MySQL分区
  10. grep/egrep和正则表达式汇总
  11. leetcode——15.3Sum
  12. ppt生成器_小米发布会ppt词云怎么做的
  13. 持续交付 devops_DevOps如何帮助向用户交付出色的应用程序
  14. [GCJ] Qualification Round 2017
  15. 11.2.0.2的SPM的一个bug
  16. windows利用DOS窗口编译C++文件
  17. 谈谈我们的学习和我们的Blog
  18. struts2登录注册示例_Struts 2动作示例教程
  19. php文字滚动特效,js文字横向滚动特效_javascript技巧
  20. 虚拟机中试用windows 8(视频)

热门文章

  1. 爬虫+pyecharts数据分析实例:当当网
  2. Python中的数据遍历操作
  3. UTF-8 's format
  4. typora使用pandoc导出功能
  5. pytorch gpu版本下载
  6. 【Qt教程】3.4 - Qt5 QPainter绘图事件、绘图功能
  7. Python:获取代码运行时间方法
  8. Python初学者的资源总结
  9. 21天战拖记——Day6:复习阶段性完成!(2014-05-09)
  10. Atitit.json xml 序列化循环引用解决方案json