Given an unsorted linked list, delete duplicate nodes from the linked list.
Thinking:
This problem is again similar to previous 2 posts (determine uniqueness and remove duplicates). There are several algorithms available.
Node definition:
Suppose the node in this linked list is defined as the class below.
Solution 1:
Without using extra buffer, delete every duplicates for each node encountered. Time complexity \(O(n^2)\).
Solution 2:
Without using extra buffer, each time encountering a node, detect if it's a duplicate. If yes, then delete it. Time complexity \(O(n^2)\).
Solution 3:
Using an extra hash table / hash set / hash map to keep track which nodes have already existed. Average time complexity \(O(n)\).
Notes:
- Would there be any differences if the linked list is doubly linked?
==> Probably not. - How about sorting the list first?
==> As long as you are allowed to destroy the original order, this should work.
No comments:
Post a Comment