# Remove duplicates from sorted array

• Difficulty Level : Easy
• Last Updated : 15 Nov, 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```

## Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

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

## Javascript

 ``

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 review-team@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