算法---删除排序链表中的重复元素 II
删除排序链表中的重复元素 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相关推荐
- list元素求和_LeetCode刷题实战82:删除排序链表中的重复元素 II
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历
Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...
- 删除排序链表中的重复元素 II
82. 删除排序链表中的重复元素 II 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字. 返回同样按升序排 ...
- go数组去除重复_让我们一起啃算法----删除排序链表中的重复元素
删除排序链表中的重复元素(Remove-Duplicates-From-Sorted-List) 题干: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1-> ...
- leetcode 82. 删除排序链表中的重复元素 II
难度:中等 频次:77 题目:给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 .返回 已排序的链表 . 解题思路: 一次遍历 注意: 遍历时候,如果两个节点 ...
- 31. Leetcode 82. 删除排序链表中的重复元素 II (链表-双指针)
给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 .返回 已排序的链表 .示例 1:输入:head = [1,2,3,3,4,4,5] 输出:[1,2,5] ...
- python删除链表重复节点_LeetCode-python 82.删除排序链表中的重复元素 II
题目链接 难度: 中等 类型:链表 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例1 输入: 1->2->3->3-> ...
- 82. 删除排序链表中的重复元素 II(链表操作)
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1-&g ...
- 文巾解题 82. 删除排序链表中的重复元素 II
1 题目描述 2 解题思路 由于给定的链表是排好序的,因此重复的元素在链表中出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素. 由于链表的头节点可能会被删除,因此我们需要额外 ...
最新文章
- halcon知识:圆度和紧凑度
- 2013年3月百度之星A题
- 作者:​郑树泉(1965-),男,上海计算机软件技术开发中心高级工程师,上海产业技术研究院工程大数据服务创新中心主任。...
- python生成指定长度的列表_如何在python中创建固定大小列表?
- mysql 用户划表_mysql用户表
- 油画作品欣赏|奥地利艺术家克里姆特
- oracle 能被2整除_2021辽宁公务员考试:好用的“整除”法
- 从0到1实现VueUI库思路
- 智图—源于QQ空间图片WebP化的思考
- mac无法验证您网络上的打印机,怎么解决?
- 数据结构总结(线性结构,树型结构,图型结构,顺序结构,链式结构)
- 前端传入数字,后端用枚举接收统一处理
- java pageoffice获取word数据_PageOffice实现最简单的Java导出Word中的数据
- python制作自己的二维码
- 家里蹲太孤单?来用python画一只单身狗吧
- 燕青分布式系统开发之分布式事务解决方案视频(2天)
- STM32F103VE基于标准库下DHT11数据串口打印输出
- 硬盘/分区克隆:怎么无损迁移老硬盘数据到新硬盘?
- java filer,java – Filer的原始元素是否有用?
- 南京工业大学校园网(智慧南工)自动登录
热门文章
- 注册app短信验证平台_短信验证码平台能免费测试吗?怎么测试?
- jdk自带压测工具_FULL GC分析过程分享
- linux降低屏幕亮度,降低屏幕亮度,减缓眼疲劳 (linux/windows/firefox/android)
- Opencv深拷贝与浅拷贝
- python写端口扫描器_使用Python编写简单的端口扫描器的实例分享
- 灰色预测模型代码_生信审稿人最常问的验证!临床预测模型中的PCA主成分分析!这点你注意到了没!(附代码)...
- 如何构建一个有效的知识库?
- 软件架构自学笔记----分享“去哪儿 Hadoop 集群 Federation 数据拷贝优化”
- Fragment 源码解析
- defensive-bash-programming