LeetCode-83. 删除排序链表中的重复元素

题目描述

给定一个已排序的链表的头head删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表

示例1

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

示例2

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

提示:

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

题解

  • 使用一个指针遍历链表,如果指针当前节点与下一个节点的值相同,我们就跳过下一个节点,当前节点直接连接下个节点的后一位。
  • 如果当前节点与下一个节点值不同,继续往后遍历
1
2
3
4
5
6
7
8
9
10
11
func deleteDuplicates(_ head: ListNode?) -> ListNode? {
var cur = head
while cur !== nil && cur?.next !== nil {
if cur!.val == cur!.next!.val {
cur?.next = cur?.next?.next
} else {
cur = cur?.next
}
}
return head
}