给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。示例 1:输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]
示例 2:输入:head = [1,1,1,2,3]
输出:[2,3]这里我们使用双指针的方式,定义a,b两个指针。 如果a指向的值不等于b指向的值,则两个指针都前进一位
否则,就单独移动b,b不断往前走,直到a指向的值不等于b指向的值。注意,这里不是直接比较a.val==b.val,这么比较不对,因为初始的时候,a指向的 是dummy head结点,所以比较逻辑应该是这样:a.next.val == b.next.val 当两个指针指向的值相等时,b不断往前移动,这里是通过一个while循环判断的, 因为要过滤掉1->2->2->2->3重复的2。

 

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def deleteDuplicates(self, head: ListNode) -> ListNode:if not (head and head.next):return headdummpy = ListNode(0)dummpy.next = heada = dummpyb = headwhile b and b.next:if a.next.val != b.next.val:a = a.nextb = b.nextelse:while b and b.next and a.next.val == b.next.val:b = b.nexta.next = b.nextb = b.nextreturn dummpy.next

31. Leetcode 82. 删除排序链表中的重复元素 II (链表-双指针)相关推荐

  1. 82. 删除排序链表中的重复元素 II(链表操作)

    给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1-&g ...

  2. LeetCode 80. 删除排序数组中的重复项 II

    1. 题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完 ...

  3. leetcode 26. 删除排序数组中的重复元素

    题目 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下 ...

  4. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历

    Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...

  5. list元素求和_LeetCode刷题实战82:删除排序链表中的重复元素 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  6. 删除排序链表中的重复元素 II

    82. 删除排序链表中的重复元素 II 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字. 返回同样按升序排 ...

  7. 算法---删除排序链表中的重复元素 II

    删除排序链表中的重复元素 II 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 .返回 已排序的链表 . 输入:head = [1,2,3,3,4,4,5] ...

  8. C++描述 LeetCode 26. 删除排序数组中的重复项

    C++描述 LeetCode 26. 删除排序数组中的重复项   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客 ...

  9. vue删除数组中的一条数据_删除排序数组中的重复项 II

    删除排序数组中的重复项 II题目 给定一个增序排列数组 nums ,你需要在 原地 删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改 ...

最新文章

  1. SAP Knowledge Article TREX search determination
  2. 微信多开软件苹果版_微信PC版 v3.0.0.57 多开amp;消息防撤回
  3. python3安装后怎么开启_python3.10 如何下载安装?
  4. c#位数不够0补充完_Java与C#比较,哪个语言更是适合你?
  5. 142.PHP session 阻塞问题
  6. python实现洗牌算法_【Python】洗牌算法及 random 中 shuffle 方法和 sample 方法浅析...
  7. 如何在Windows命令行窗口复制和粘贴?
  8. JTAG IEEE 1194.1笔记
  9. 北京地铁21号线_北京迎来地铁22号线,全长81公里,沿线的市民有福了
  10. 网页短链接实现原理探究
  11. C#课程设计(购物平台)
  12. matlab求基音频率,语音中提取基音频率matlab程序.doc
  13. GPU跑TensorFlow的各种显卡下的电脑配置(1080ti)
  14. 【读书笔记】程序员们需读的一本书《软技能:代码之外的生存指南》 | 约翰 Z.森梅兹
  15. 微信小程序获取当前时间戳、日期、时间
  16. ui设计概念是什么?ui设计包括哪些设计?
  17. mysql引擎怎么选
  18. soul 网关源码解析
  19. 分分钟掌握人脸识别:face_recognition模块
  20. flutter dio 示例

热门文章

  1. ios 容错处理JKDataHelper和AvoidCrash
  2. CentOS6.5 编译安装zabbix3.0.5,编译安装zabbix_agent客户端
  3. 新时代,大数据战略和DevOps更配
  4. DiscuX END - 553 Envolope sender mismatch with header from..
  5. 论逗逼的自我修养——BZOJ第一页计划
  6. JVM的垃圾回收与内存分配
  7. 学习 ---AJAX如何用于Web部件
  8. Linux文件系统中文版,Linux 文件系统-Go语言中文社区
  9. 度量相似性数学建模_【数学建模】day09-聚类分析
  10. python接口自动化测试面试题_Python接口自动化面试题总结