Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.
Input: head = [1,1,2]
Output: [1,2]
Input: head = [1,1,2,3,3]
Output: [1,2,3]
The number of nodes in the list is in the range [0, 300].
-100 <= Node.val <= 100
The list is guaranteed to be sorted in ascending order.
Solutions (Click to expand)
In a sorted list duplicate nodes are next to each other. If we want to remove duplicate nodes from the list we need to go through the list and for every unique node check if there is a duplicate right next to it. If there is relink the node with the node after that. If that node is a duplicate link it with the node after that. This would go one until we find the next NON NULL node or we reach the end of the list.
Time: O(N)
Where N
is the length of the list
Space: O(1)