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
.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null) return null;
ListNode pre = new ListNode(Integer.MAX_VALUE);
pre.next = head;
ListNode h = pre;
ListNode cur = head;
ListNode last = head.next;
boolean found = false;
while(last!=null){
while(last!=null&&last.val==cur.val){
last = last.next;
found = true;
}
if(found){
pre.next = last;
}else{
pre = cur;
}
cur = last;
if(last!=null) last=last.next;
found = false;
}
return h.next;
}
}