C++描述 LeetCode83. 刪除排序連結串列中的重複元素

2020-10-25 14:01:06

C++描述 LeetCode83. 刪除排序連結串列中的重複元素

  大家好,我叫亓官劼(qí guān jié ),在CSDN中記錄學習的點滴歷程,時光荏苒,未來可期,加油~博主目前僅在CSDN中寫部落格,唯一部落格更新的地址為:亓官劼的部落格

本文原創為亓官劼,請大家支援原創,部分平臺一直在惡意盜取博主的文章!!!


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

範例 1:

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

範例 2:

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

題解

從頭開始遍歷,如果相鄰兩個相等,則刪除下一個結點,否則繼續右移。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(head == NULL)
            return head;
        ListNode*p = head;
        while(p->next){
            // 如果當前的和下一個一樣,那麼刪除下一個結點,當前結點不動
            if(p->val == p->next->val){
                p->next = p->next->next;
            }else{
                // 如果不同,則繼續移動
                p =p->next;
            }
        }
        return head;
    }
};
亓官劼 CSDN認證部落格專家 Python 全棧 資料結構與演演算法
大家好,我是亓官劼(qíguānjié),在部落格中分享資料結構與演演算法、Python全棧開發、Java後端開發、前端、OJ題解及各類報錯資訊解決方案等經驗。一起加油,用知識改變命運,未來可期。
若有事項需聯絡博主,可通過Q1710269687進行聯絡,有空會回覆。