Question Definition
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.
Java Solution
public ListNode deleteDuplicates(ListNode head) {
ListNode newHead = null;
ListNode newPre = null;
while(head != null){
boolean duplicate = false;
while(head.next != null && head.next.val == head.val){
head = head.next;
duplicate = true;
}
if(!duplicate){
ListNode newNode = new ListNode(head.val);
if(newHead == null){
newHead = newNode;
newPre = newNode;
}else{
newPre.next = newNode;
newPre = newNode;
}
}
head = head.next;
}
return newHead;
}
Comments