ソートされたリストIIから82削除重複**

ソートされたリストIIから82削除重複**

https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/

タイトル説明

ソートされたリンクリストを考えると、のみ残し、重複した数字を持っているすべてのノードを削除する明確な元のリストから数値を。

リンクリストを返すだけでなくソート。

例1:

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

例2:

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

C ++の実装1

使用[pre, next)すると、同じノードの値をマークするpre->next == next記述は、pre一意であり、に追加する必要がありdummy、リスト。で重複ノードを削除することも問題*リンクリスト206リバースを

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if (!head || !head->next) return head;
        ListNode* dummy = new ListNode(0);
        auto p = dummy;
        auto pre = head, next = head->next;
        auto value = pre->val;
        
        while (next) {
            if (next->val == value) {
                next = next->next;
            } else {
                if (pre->next == next) {
                    p->next = pre;
                    p = p->next;
                }
                pre = next;
                next = next->next;
                value = pre->val;
            }
        }
        p->next = pre->next ? nullptr : pre;
        
        head = dummy->next;
        return head;
    }
};
公開された455元の記事 ウォンの賞賛8 ビュー20000 +

おすすめ

転載: blog.csdn.net/Eric_1993/article/details/104987741