给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
- 示例 1:
输入: 1->1->2
输出: 1->2 - 示例 2:
输入: 1->1->2->3->3
输出: 1->2->3解法:
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
26object RemoveLinkedListRepeatNode {
def main(args: Array[String]): Unit = {
println(deleteDuplicates(ListNode(1, ListNode(1, null))))
println(deleteDuplicates(ListNode(1, ListNode(1, ListNode(2, null)))))
println(deleteDuplicates(ListNode(1, ListNode(1, ListNode(2, ListNode(2, null))))))
}
def deleteDuplicates(head: ListNode): ListNode = {
if (head == null || head.next == null) return head
val res = head
var i = head
var j = head.next
while (j != null) {
while (i.x == j.x && j.next != null) j = j.next
if (i.x != j.x) {
i.next = j
i = j
}
j = j.next
i.next = null
}
res
}
case class ListNode(x: Int, var next: ListNode)
}