Remove duplicates from an sorted linked list

Posted by N.K. Chauhan 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


Find the middle of a given linked list

Remove duplicates from an unsorted linked list

Delete a loop in a linked list (Floyd Cycle)

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

Add two numbers represented by linked lists

Add 1 to a number represented as a linked list

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