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)
- Create an auxiliary array temp[] to store unique elements.
- 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.
- Copy j elements from temp[] to arr[] and return j
C++
// 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; } |
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<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]+ " " ); } } |
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. |
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<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; } |
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<n; i++) System.out.print(arr[i]+ " " ); } } /* This code is contributed by Harsh Agarwal */ |
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 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.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.