Skip to content

83. Remove Duplicates from Sorted List

Description

Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.

Example 1:

Input: head = [1,1,2]
Output: [1,2]

Example 2:

Input: head = [1,1,2,3,3]
Output: [1,2,3]

Constraints:

  • The number of nodes in the list is in the range [0, 300].
  • -100 <= Node.val <= 100
  • The list is guaranteed to be sorted in ascending order.

Solutions

I Iteration

Complexity:

  • Time complexity: \(O(n)\).
  • Space complexity: \(O(1)\).
func deleteDuplicates(head *ListNode) *ListNode {
    if head == nil || head.Next == nil {
        return head
    }

    node := head
    for p := head.Next; p != nil; p = p.Next {
        if node.Val != p.Val {
            node.Next = p
            node = p
        }
    }
    node.Next = nil
    return head
}