82. 删除排序链表中的重复元素 II
题目描述
给定一个已排序的链表的头 \(head\) , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。
示例 1:
1 2 |
|
示例 2:
1 2 |
|
提示:
- 链表中节点数目在范围 \([0, 300]\) 内
- \(-100\) \(≤\) \(Node.val\) \(≤\) \(100\)
- 题目数据保证链表已经按升序 排列
算法与思路
线性扫描 \(O(n)\)
为方便处理边界问题,定义一个虚拟元素 \(dummy\) 指向 \(head\) 结点,赋值为 \(0\),保证整个链表为升序。
然后从前往后扫描整个链表,每次扫描元素相同的一段。若此段元素个数大于 \(1\) 个,将整段元素删除。
时间复杂度:整个链表遍历一遍,整个复杂度为 \(O(n)\)。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|