删除排序链表中的重复元素

一天一道算法题

Posted by AndyCao on September 9, 2019

题目

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

示例1

输入: 1->1->2
输出: 1->2

示例2

输入: 1->1->2->3->3
输出: 1->2->3

定义节点

class ListNode {
    public var val: Int
    public var next: ListNode?
    public init(_ val: Int) {
        self.val = val
        self.next = nil
     }
 }

解法

func deleteDuplicates(_ head: ListNode?) -> ListNode? {
    var current = head
    var next = head?.next
    while next != nil {
        if current?.val == next?.val {
            current?.next = next?.next
            next = next?.next
        }
        else {
            current = next
            next = next?.next
        }
    }
    return head
}