Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5
, return 1->2->5
.
Given 1->1->1->2->3
, return 2->3
.
public ListNode deleteDuplicates(ListNode head) {
ListNode root = new ListNode(0);
root.next = head;
head = root;
while (root.next != null) {
int val = root.next.val;
ListNode pNode = root.next.next;
while (pNode != null) {
if (val != pNode.val) {
break;
}
pNode = pNode.next;
}
if (pNode == root.next.next) {
root = root.next;
} else {
root.next = pNode;
}
}
return head.next;
}