LeetCode(E) Remove Duplicates from Sorted List

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.

最初我的代碼

ListNode *deleteDuplicates(ListNode *head) {
        // write your code here
    if(head==NULL) return NULL;
      ListNode *p;
       p=head;
       while(p->next){
           if(p->next->val==p->val){
               p->next=p->next->next;
           }
           else p=p->next;
       }
       return p;
    }

這裏錯在,最終輸出結果p指向的是鏈表的最後一個元素,而不是鏈表頭
結果如下:

輸入
0->1->2->3->7->null
輸出
7->null
期望答案
0->1->2->3->7->null

修改後正確答案

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
       if(!head) return NULL;
       ListNode *p,*pre=new ListNode(-1);
pre->next=head;       p=head;
       while(p->next){
           if(p->next->val==p->val){
               p->next=p->next->next;
           }
           else p=p->next;
       }
       return pre->next;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章