[leetcode] problem 82 – remove duplicates from sorted list ii

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

Example

No.1

Input: 1->2->3->3->4->4->5

Output: 1->2->5

No.2

Input: 1->1->1->2->3

Output: 2->3

Code

1
2
3
4
5
public class  {
int val;
ListNode next = null;
ListNode(int x) { val = x; }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public ListNode deleteDuplicates(ListNode head) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode prev = dummy;
ListNode current = head;

while (current != null && current.next != null) {
if (current.val == current.next.val) {
while (current.next != null && current.next.val == prev.next.val)
current = current.next;

current = current.next;
prev.next = current;
}
else {
prev = current;
current = current.next;
}
}

return dummy.next;
}