Remove duplicates from an sorted linked list

Posted by on Mar 31, 2024

Given the reference (pointer) to the head node of a "sorted" linked list, the task is to remove duplicates from it.

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

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


Solutions

Method 1: In O(n) time and O(1) space

The idea is to traverse the list and keep track of "current" and "previous" node's refereence.

In each iteration, check if the current node's data is equal to previous node's data. If yes, delete the current node.

To delete a node, point 'prev' to the current's next.

Complexity

The time complexity of this solution is O(n) and space complexity is O(1).

Related


Reverse a linked list (Recursion, Iterative, Using Stack, Using Array)

Remove duplicates from an unsorted linked list

Detect a loop in a linked list (Floyd Cycle, Map, node modification)

Add two numbers represented by linked lists

Delete a loop in a linked list (Floyd Cycle)

Find the middle of a given linked list

Add 1 to a number represented as a linked list