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


Add two numbers represented by linked lists

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

Delete a loop in a linked list (Floyd Cycle)

Add 1 to a number represented as a linked list

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

Find the middle of a given linked list

Remove duplicates from an unsorted linked list