1public ListNode deleteDuplicates(ListNode head) {
2 ListNode dummy = new ListNode(0);
3 dummy.next = head;
4 ListNode prev = dummy;
5 ListNode curr = head;
6
7 while (curr != null) {
8 if (curr.next != null && curr.val == curr.next.val) {
9 // Skip all duplicates
10 while (curr != null && curr.val == prev.next.val) {
11 curr = curr.next;
12 }
13 prev.next = curr;
14 } else {
15 prev = curr;
16 curr = curr.next;
17 }
18 }
19
20 return dummy.next;
21}