力扣 83. 刪除排序鏈表中的重復元素
給定一個排序鏈表退疫,刪除所有重復的元素嫩实,使得每個元素只出現(xiàn)一次壤躲。
示例 1:
輸入: 1->1->2
輸出: 1->2
示例 2:
輸入: 1->1->2->3->3
輸出: 1->2->3
使用雙指針醇疼,快慢指針一次循環(huán)遍歷漩蟆,每次對比兩個節(jié)點是否相同宁否,相同快指針指向下一節(jié)點卡乾,不同快慢指針個指向下一個節(jié)點奈附。代碼如下:
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
}