您的位置:首页 > 其它

[LeetCode79]Remove Duplicates from Sorted List

2014-05-28 00:38 393 查看
Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,

Given
1->1->2
, return
1->2
.

Given
1->1->2->3->3
, return
1->2->3
.

Analysis:

The idea is to use two pointer to scan, compare and remove the duplicates from the start to end.

if p1.val == p2.val, p2 = p2.next

else p1.next = p2, p1 = p1.next, p2 = p2.next

c++

ListNode *deleteDuplicates(ListNode *head) {
    if(head==NULL||head->next==NULL) return head;
    ListNode *p1 = head;
    ListNode *p2 = head->next;
    while(p2!=NULL){
        if(p1->val == p2->val){
            p2 = p2->next;
        }
        else{
            p1->next = p2;
            p2 = p2->next;
            p1 = p1->next;
        }
    }
    p1->next = p2;
    return head;
}
Java

public ListNode deleteDuplicates(ListNode head) {
        // IMPORTANT: Please reset any member data you declared, as
        // the same Solution instance will be reused for each test case.
       ListNode n1=head;
       while(n1 != null && n1.next !=null){
    	   if(n1.val == n1.next.val){
    		   n1.next = n1.next.next;
    	   }
    	   else
    		   n1 = n1.next;
       }
       return head;
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: