Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given
Given
Given
1->2->3->3->4->4->5, return 1->2->5.Given
1->1->1->2->3, return 2->3.
01 public ListNode deleteDuplicates(ListNode head) {
02 ListNode prev=null;
03 ListNode curr=head;
04
05 while(curr!=null && curr.next!=null)
06 {
07 if(curr.val!=curr.next.val)
08 {
09 prev=curr;
10 curr=curr.next;
11 }
12 else
13 {
14 while(curr.next!=null && curr.val==curr.next.val)
15 {
16 if(head==curr)
17 {
18 head=head.next;
19 }
20 curr=curr.next;
21 }
22 if(prev==null)
23 {
24 prev=curr.next;
25 }
26 else
27 {
28 prev.next=curr.next;
29 }
30 if(head==curr)
31 {
32 head=head.next;
33 }
34 curr=curr.next;
35 }
36 }
37 return head;
38 }
02 ListNode prev=null;
03 ListNode curr=head;
04
05 while(curr!=null && curr.next!=null)
06 {
07 if(curr.val!=curr.next.val)
08 {
09 prev=curr;
10 curr=curr.next;
11 }
12 else
13 {
14 while(curr.next!=null && curr.val==curr.next.val)
15 {
16 if(head==curr)
17 {
18 head=head.next;
19 }
20 curr=curr.next;
21 }
22 if(prev==null)
23 {
24 prev=curr.next;
25 }
26 else
27 {
28 prev.next=curr.next;
29 }
30 if(head==curr)
31 {
32 head=head.next;
33 }
34 curr=curr.next;
35 }
36 }
37 return head;
38 }