Related Articles

# Remove duplicates from sorted array

• Difficulty Level : Easy
• Last Updated : 20 May, 2021

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++

 `// Simple C++ program to remove duplicates``#include``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

## Java

 `// 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

## Python3

 `# 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 ``=` `" "``)`

## C#

 `// 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.`

## Javascript

 ``

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++

 `// C++ program to remove duplicates in-place``#include``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

## Java

 `// 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

Python3

``````
# 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 = " ")
``````

## C#

 `// 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.`

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 write.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.