1. 程式人生 > 其它 >【力扣 092】82. 刪除排序連結串列中的重複元素 II

【力扣 092】82. 刪除排序連結串列中的重複元素 II

82. 刪除排序連結串列中的重複元素 II

給定一個已排序的連結串列的頭 head , 刪除原始連結串列中所有重複數字的節點,只留下不同的數字 。返回 已排序的連結串列 。

示例 1:


輸入:head = [1,2,3,3,4,4,5]
輸出:[1,2,5]
示例 2:


輸入:head = [1,1,1,2,3]
輸出:[2,3]
 

提示:

連結串列中節點數目在範圍 [0, 300] 內
-100 <= Node.val <= 100
題目資料保證連結串列已經按升序 排列

來源:力扣(LeetCode)
連結:https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

程式碼實現:

/**
 * 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) return head;
        ListNode *dumy = new ListNode(0), *pre = dumy, *p = head;
        dumy->next = head;
        while(p)
        {
            while(p->next && p->val == p->next->val)
                p = p->next;
            if(pre->next != p)
            {
                pre->next = p->next;
                p = pre->next;
            }
            else
            {
                pre = pre->next;
                p = p->next;
            }
        }
        return dumy->next;  
    }
};