Remove duplicate element from sorted Linked List

Tags : linkedlist, geeksforgeeks, cpp, easy

Given a singly linked list consisting of N nodes. The task is to remove duplicates (nodes with duplicate values) from the given list (if exists). Note: Try not to use extra space. Expected time complexity is O(N). The nodes are arranged in a sorted way.

Your Task: The task is to complete the function removeDuplicates() which should remove the duplicates from linked list and return the head of the linkedlist.

Expected Time Complexity: O(N)
Expected Auxiliary Space: O(1)

Examples #

Example 1:

Input:
LinkedList: 2->2->4->5
Output: 2 4 5
Explanation: In the given linked list 
2 ->2 -> 4-> 5, only 2 occurs more 
than 1 time.

Example 2:

Input:
LinkedList: 2->2->2->2->2
Output: 2
Explanation: In the given linked list 
2 ->2 ->2 ->2 ->2, 2 is the only element
and is repeated 5 times.

Constraints #

Solutions #

class Solution{
    public:
    /*
    struct Node {
    int data;
    struct Node *next;
    Node(int x) {
        data = x;
        next = NULL;
    }
    };
    */

    //Function to remove duplicates from sorted linked list.
    Node *removeDuplicates(Node *head)
    {
    // your code goes here
        Node *res = head;
        while(head!=NULL && head->next!=NULL){
            if(head->data == head->next->data)
                head->next = head->next->next;
            else head = head->next; 
        }
        return res;
    
    }
};