Remove Duplicates from Sorted List II
Problem
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Example
Given 1->2->3->3->4->4->5
, return 1->2->5
.
Given 1->1->1->2->3
, return 2->3
.
Solutions
If we use a pointer p
, bascially we are comparing p.next
and p.next.next
- if they are different, no duplicates, simply move
p
forward; - if they are the same, we should skip all nodes with
p.next.val
and letp.next
point to the next value. Note thatp
does NOT move in this case, onlyp.next
is updated.
Since the head
node may be removed, we should use a dummy
node to help remember the head position.