1836. Remove Duplicates From an Unsorted Linked List
Given the head of a linked list, find all the values that appear more than once in the list and delete the nodes that have any of those values.
Return the linked list after the deletions.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
class Solution { public: ListNode* deleteDuplicatesUnsorted(ListNode* head) { unordered_map<int, int> mp; ListNode* run = head; while(run) { mp[run->val]++; run = run->next; } while(head && mp[head->val] != 1) head = head->next; run = head; while(run && run->next) { if(mp[run->next->val] == 1) run = run->next; else run->next = run->next->next; } return head; } };
|