How do you remove duplicates from an array in place?

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

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

// 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 != arr[i+1])
temp[j++] = arr;

// 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 = temp;

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 << " ";

return 0;
}
 
Back
Top