2020年5月30日 星期六

LeetCode 82. Remove Duplicates from Sorted List II [Medium] [C++] 解題筆記

這題給定一個排序好的 Linked list 要求刪除裡面有所有 val 重複的 node。


EX:

        Input: 1->2->3->3->4->4->5
        Output: 1->2->5

想法:
    這題沒啥特別的作法,基本上就照著實做,
然後 linked list 類的題目記得要特別注意 head 相關的 edge case。

完整程式碼:
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode dummy(0);
        dummy.next = head;
        ListNode* pre = &dummy;
        ListNode* cur = head;
        while (cur != nullptr) {
            if (cur->next != nullptr && cur->val == cur->next->val) {
                while (cur->next != nullptr && cur->val == cur->next->val) {
                    pre->next = cur->next->next;
                    cur = cur->next;
                }
                cur = cur->next;
            }
            else {
                pre = cur;
                cur = pre->next;
            }
        }
        return dummy.next;
    }
};

沒有留言:

張貼留言