传送门

思路:简单的链表去重,用一个set保存已有数据,每一步检测当前val是否出现过,未出现过就入集合,出现过就删除它。

class Solution {
public:
    ListNode* removeDuplicateNodes(ListNode* head) {
        if (head == nullptr) return head;

        unordered_set<int> s = {head->val};
        
        ListNode* p = head;
        while (p->next != nullptr) {
            ListNode* cur = p->next;

            if (!s.count(cur->val)) {
                s.insert(cur->val);
                p = p->next;
            } else {
                p->next = cur->next;
            }
        }
        p->next = nullptr;

        return head;
    }
};