Remove duplicates from sorted array

Given a sorted array, the task is to remove the duplicate elements from the array.

Examples:

Input  : arr[] = {2, 2, 2, 2, 2}
Output : arr[] = {2}
         new size = 1

Input  : arr[] = {1, 2, 2, 3, 4, 4, 4, 5, 5}
Output : arr[] = {1, 2, 3, 4, 5}
         new size = 5

Method 1: (Using extra space)

  1. Create an auxiliary array temp[] to store unique elements.
  2. Traverse input array and one by one copy unique elements of arr[] to temp[]. Also keep track of count of unique elements. Let this count be j.
  3. Copy j elements from temp[] to arr[] and return j

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// Simple C++ program to remove duplicates
#include<iostream>
using namespace std;
  
// Function to remove duplicate elements
// This function returns new size of modified
// array.
int removeDuplicates(int arr[], int n)
{
    // Return, if array is empty
    // or contains a single element
    if (n==0 || n==1)
        return n;
  
    int temp[n];
  
    // Start traversing elements
    int j = 0;
    for (int i=0; i<n-1; i++)
  
        // If current element is not equal
        // to next element then store that
        // current element
        if (arr[i] != arr[i+1])
            temp[j++] = arr[i];
  
    // Store the last element as whether
    // it is unique or repeated, it hasn't
    // stored previously
    temp[j++] = arr[n-1];
  
    // Modify original array
    for (int i=0; i<j; i++)
        arr[i] = temp[i];
  
    return j;
}
  
// Driver code
int main()
{
    int arr[] = {1, 2, 2, 3, 4, 4, 4, 5, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
  
    // removeDuplicates() returns new size of
    // array.
    n = removeDuplicates(arr, n);
  
    // Print updated array
    for (int i=0; i<n; i++)
       cout << arr[i] << " ";
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

   
// simple java program to remove
// duplicates
  
class Main
{
    // Function to remove duplicate elements
    // This function returns new size of modified
    // array.
    static int removeDuplicates(int arr[], int n)
    {
        // Return, if array is empty
        // or contains a single element
        if (n==0 || n==1)
            return n;
       
        int[] temp = new int[n];
          
        // Start traversing elements
        int j = 0;
        for (int i=0; i<n-1; i++)
            // If current element is not equal
            // to next element then store that
            // current element
            if (arr[i] != arr[i+1])
                temp[j++] = arr[i];
          
        // Store the last element as whether
        // it is unique or repeated, it hasn't
        // stored previously
        temp[j++] = arr[n-1];   
          
        // Modify original array
        for (int i=0; i<j; i++)
            arr[i] = temp[i];
       
        return j;
    }
      
    public static void main (String[] args) 
    {
        int arr[] = {1, 2, 2, 3, 4, 4, 4, 5, 5};
        int n = arr.length;
          
        n = removeDuplicates(arr, n);
   
        // Print updated array
        for (int i=0; i<n; i++)
           System.out.print(arr[i]+" ");
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to
# remove duplicates
# Function to remove
# duplicate elements
  
# This function returns
# new size of modified
# array.
def removeDuplicates(arr, n):
  
    # Return, if array is 
    # empty or contains
    # a single element
    if n == 0 or n == 1:
        return n
  
    temp = list(range(n))
  
    # Start traversing elements
    j = 0;
    for i in range(0, n-1):
  
        # If current element is
        # not equal to next
        # element then store that
        # current element
        if arr[i] != arr[i+1]:
            temp[j] = arr[i]
            j += 1
  
    # Store the last element
    # as whether it is unique
    # or repeated, it hasn't
    # stored previously
    temp[j] = arr[n-1]
    j += 1
      
    # Modify original array
    for i in range(0, j):
        arr[i] = temp[i]
  
    return j
  
# Driver code
arr = [1, 2, 2, 3, 4, 4, 4, 5, 5]
n = len(arr)
  
# removeDuplicates() returns
# new size of array.
n = removeDuplicates(arr, n)
  
# Print updated array
for i in range(n):
    print ("%d"%(arr[i]), end = " ")

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// Simple C# program to remove
// duplicates
using System;
  
class GFG {
      
    // Function to remove duplicate
    // elements This function returns
    // new size of modified array.
    static int removeDuplicates(int []arr, int n)
    {
          
        // Return, if array is empty
        // or contains a single element
        if (n == 0 || n == 1)
            return n;
      
        int []temp = new int[n];
          
        // Start traversing elements
        int j = 0;
          
        for (int i = 0; i < n - 1; i++)
          
            // If current element is not equal
            // to next element then store that
            // current element
            if (arr[i] != arr[i+1])
                temp[j++] = arr[i];
          
        // Store the last element as
        // whether it is unique or 
        // repeated, it hasn't
        // stored previously
        temp[j++] = arr[n-1]; 
          
        // Modify original array
        for (int i = 0; i < j; i++)
            arr[i] = temp[i];
      
        return j;
    }
      
    public static void Main () 
    {
        int []arr = {1, 2, 2, 3, 4, 4, 4, 5, 5};
        int n = arr.Length;
          
        n = removeDuplicates(arr, n);
  
        // Print updated array
        for (int i = 0; i < n; i++)
            Console.Write(arr[i] + " ");
    }
}
  
// This code is contributed by nitin mittal.

chevron_right



Output:

1 2 3 4 5

Time Complexity : O(n)
Auxiliary Space : O(n)

Method 2: (Constant extra space)
Just maintain a separate index for same array as maintained for different array in Method 1.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to remove duplicates in-place
#include<iostream>
using namespace std;
  
// Function to remove duplicate elements
// This function returns new size of modified
// array.
int removeDuplicates(int arr[], int n)
{
    if (n==0 || n==1)
        return n;
  
    // To store index of next unique element
    int j = 0;
  
    // Doing same as done in Method 1
    // Just maintaining another updated index i.e. j
    for (int i=0; i < n-1; i++)
        if (arr[i] != arr[i+1])
            arr[j++] = arr[i];
  
    arr[j++] = arr[n-1];
  
    return j;
}
  
// Driver code
int main()
{
    int arr[] = {1, 2, 2, 3, 4, 4, 4, 5, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
  
    // removeDuplicates() returns new size of
    // array.
    n = removeDuplicates(arr, n);
  
    // Print updated array
    for (int i=0; i<n; i++)
        cout << arr[i] << " ";
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// simple java program to remove
// duplicates
  
class Main
{
    // Function to remove duplicate elements
    // This function returns new size of modified
    // array.
    static int removeDuplicates(int arr[], int n)
    {
        if (n == 0 || n == 1)
            return n;
       
        // To store index of next unique element
        int j = 0;
       
        // Doing same as done in Method 1
        // Just maintaining another updated index i.e. j
        for (int i = 0; i < n-1; i++)
            if (arr[i] != arr[i+1])
                arr[j++] = arr[i];
       
        arr[j++] = arr[n-1];
       
        return j;
    }
      
    public static void main (String[] args) 
    {
        int arr[] = {1, 2, 2, 3, 4, 4, 4, 5, 5};
        int n = arr.length;
          
        n = removeDuplicates(arr, n);
   
        // Print updated array
        for (int i=0; i<n; i++)
           System.out.print(arr[i]+" ");
    }
}
  
/* This code is contributed by Harsh Agarwal */

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to remove
# duplicate elements
  
# This function returns new 
# size of modified array
def removeDuplicates(arr, n):
    if n == 0 or n == 1:
        return n
  
    # To store index of next
    # unique element
    j = 0
  
    # Doing same as done
    # in Method 1 Just
    # maintaining another 
    # updated index i.e. j
    for i in range(0, n-1):
        if arr[i] != arr[i+1]:
            arr[j] = arr[i]
            j += 1
  
    arr[j] = arr[n-1]
    j += 1
    return j
  
# Driver code
arr = [1, 2, 2, 3, 4, 4, 4, 5, 5]
n = len(arr)
  
# removeDuplicates() returns
# new size of array.
n = removeDuplicates(arr, n)
  
# Print updated array
for i in range(0, n):
    print (" %d "%(arr[i]), end = " ")

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// simple C# program to remove
// duplicates
using System;
  
class GfG {
      
    // Function to remove duplicate
    // elements This function returns 
    // new size of modified array.
    static int removeDuplicates(int []arr, int n)
    {
          
        if (n == 0 || n == 1)
            return n;
      
        // To store index of next
        // unique element
        int j = 0;
      
        // Doing same as done in Method 1
        // Just maintaining another updated
        // index i.e. j
        for (int i = 0; i < n - 1; i++)
            if (arr[i] != arr[i + 1])
                arr[j++] = arr[i];
      
        arr[j++] = arr[n - 1];
      
        return j;
    }
      
    public static void Main () 
    {
        int []arr = {1, 2, 2, 3, 4, 4,
                                 4, 5, 5};
        int n = arr.Length;
          
        n = removeDuplicates(arr, n);
  
        // Print updated array
        for (int i = 0; i < n; i++)
            Console.Write(arr[i] + " ");
    }
}
  
// This code is contributed by parashar.

chevron_right



Output:

1 2 3 4 5

Time Complexity : O(n)
Auxiliary Space : O(1)

This article is contributed by Sahil Chhabra. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up

Improved By : parashar, nitin mittal