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

给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。

输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]


输入:head = [1,1,1,2,3]
输出:[2,3]

提示:

链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序 排列

参考:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/

解决思路:

官方思路写的还是比较清晰的:
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/solution/shan-chu-pai-xu-lian-biao-zhong-de-zhong-oayn/

解决方法:

    public ListNode deleteDuplicates2(ListNode head) {if (head == null) {return head;}ListNode dummy = new ListNode(0, head);ListNode cur = dummy;while (cur.next != null && cur.next.next != null) {if (cur.next.val == cur.next.next.val) {int x = cur.next.val;while (cur.next != null && cur.next.val == x) {cur.next = cur.next.next;}} else {cur = cur.next;}}return dummy.next;}

我写的:

    public ListNode deleteDuplicates(ListNode head) {if (head == null) {return null;}ListNode dummyNode = new ListNode(-1);ListNode cur = dummyNode;dummyNode.next = head;int dumpNum = -1000;while (cur.next != null){if (dumpNum != -1000) {if (cur.next.val == dumpNum){cur.next = cur.next.next;}else {dumpNum = -1;}}else {if (cur.next.next != null && cur.next.val == cur.next.next.val){dumpNum = cur.next.val;}else {cur = cur.next;}}}return dummyNode.next;}

思考:

1.没写一行都要好好思考一下,不要随便写了一行,为了debug 这一行的问题,花了半个小时

2.创造一个虚假节点方法还是比较值得学习的

3.对于单链表,不要老想着区间删除,一个一个删除也挺好

4.双层while 循环时间复杂度就一定是O(n*n) 吗? 不一定,此题就是O(n)

算法---删除排序链表中的重复元素 II相关推荐

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

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

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

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

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

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

  4. go数组去除重复_让我们一起啃算法----删除排序链表中的重复元素

    删除排序链表中的重复元素(Remove-Duplicates-From-Sorted-List) 题干: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1-> ...

  5. leetcode 82. 删除排序链表中的重复元素 II

    难度:中等 频次:77 题目:给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 .返回 已排序的链表 . 解题思路: 一次遍历 注意: 遍历时候,如果两个节点 ...

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

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

  7. python删除链表重复节点_LeetCode-python 82.删除排序链表中的重复元素 II

    题目链接 难度: 中等       类型:链表 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例1 输入: 1->2->3->3-> ...

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

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

  9. 文巾解题 82. 删除排序链表中的重复元素 II

    1 题目描述 2 解题思路 由于给定的链表是排好序的,因此重复的元素在链表中出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素. 由于链表的头节点可能会被删除,因此我们需要额外 ...

最新文章

  1. halcon知识:圆度和紧凑度
  2. 2013年3月百度之星A题
  3. 作者:​郑树泉(1965-),男,上海计算机软件技术开发中心高级工程师,上海产业技术研究院工程大数据服务创新中心主任。...
  4. python生成指定长度的列表_如何在python中创建固定大小列表?
  5. mysql 用户划表_mysql用户表
  6. 油画作品欣赏|奥地利艺术家克里姆特
  7. oracle 能被2整除_2021辽宁公务员考试:好用的“整除”法
  8. 从0到1实现VueUI库思路
  9. 智图—源于QQ空间图片WebP化的思考
  10. mac无法验证您网络上的打印机,怎么解决?
  11. 数据结构总结(线性结构,树型结构,图型结构,顺序结构,链式结构)
  12. 前端传入数字,后端用枚举接收统一处理
  13. java pageoffice获取word数据_PageOffice实现最简单的Java导出Word中的数据
  14. python制作自己的二维码
  15. 家里蹲太孤单?来用python画一只单身狗吧
  16. 燕青分布式系统开发之分布式事务解决方案视频(2天)
  17. STM32F103VE基于标准库下DHT11数据串口打印输出
  18. 硬盘/分区克隆:怎么无损迁移老硬盘数据到新硬盘?
  19. java filer,java – Filer的原始元素是否有用?
  20. 南京工业大学校园网(智慧南工)自动登录

热门文章

  1. 注册app短信验证平台_短信验证码平台能免费测试吗?怎么测试?
  2. jdk自带压测工具_FULL GC分析过程分享
  3. linux降低屏幕亮度,降低屏幕亮度,减缓眼疲劳 (linux/windows/firefox/android)
  4. Opencv深拷贝与浅拷贝
  5. python写端口扫描器_使用Python编写简单的端口扫描器的实例分享
  6. 灰色预测模型代码_生信审稿人最常问的验证!临床预测模型中的PCA主成分分析!这点你注意到了没!(附代码)...
  7. 如何构建一个有效的知识库?
  8. 软件架构自学笔记----分享“去哪儿 Hadoop 集群 Federation 数据拷贝优化”
  9. Fragment 源码解析
  10. defensive-bash-programming