搜索此博客

2013年1月31日星期四

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.
For example,
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 }

没有评论:

发表评论