力扣 83. 刪除排序鏈表中的重復(fù)元素
給定一個(gè)排序鏈表,刪除所有重復(fù)的元素,使得每個(gè)元素只出現(xiàn)一次。
示例 1:
輸入: 1->1->2
輸出: 1->2
示例 2:
輸入: 1->1->2->3->3
輸出: 1->2->3
使用雙指針,快慢指針一次循環(huán)遍歷,每次對(duì)比兩個(gè)節(jié)點(diǎn)是否相同,相同快指針指向下一節(jié)點(diǎn),不同快慢指針個(gè)指向下一個(gè)節(jié)點(diǎn)。代碼如下:
func deleteDuplicates(_ head: ListNode?) -> ListNode? {
guard let head = head else {
return nil
}
var slow: ListNode? = head
var fast = head.next
while fast != nil {
if slow?.val == fast?.val {
slow?.next = fast?.next
fast = fast?.next
}else {
slow = fast
fast = fast?.next
}
}
return head
}