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
}