1. 程式人生 > >Leetcode---83. 刪除排序連結串列中的重複元素

Leetcode---83. 刪除排序連結串列中的重複元素

給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。

示例 1:

輸入: 1->1->2
輸出: 1->2

示例 2:

輸入: 1->1->2->3->3
輸出: 1->2->3

-----------------------------------------------------------------------------------------------------------------------------------------------------------

由於這個連結串列是有序的,那麼操作就很容易了,直接用一個int k來記錄每次出現的不同val,k在不同的val第一次出現時更新如果有重複,那麼一定就緊挨著在後面出現(因為有序)這裡只要不停的後移,直到出現不同的val 時,更新k,並且移動指標。  說起來有點抽象,還是看程式碼吧。。  這次超過了99.96%的提交,hahahahahah(雖然是道簡單題,但還是很happy)

AC:

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if (head==NULL)
            return head;
        ListNode* root=head;
        ListNode* rr=head;
        ListNode* r=root->next;
        int k=root->val;
        while(r!=NULL)
        {
           if (r->val==k)
           {
               r=r->next;
           }else                                  //這裡手畫一個連結串列更容易理解。
           {


               k=r->val;
               root->next=r;
               root=root->next;
               r=r->next;
           }
        }
        root->next=NULL;
    //最後一定要將root->next置空,不然對於【1,1,1】的情況就是輸出【1,1,1】了
        return rr;
        
    }
};