How to remove duplicates in-place from an unsorted integer array in C++

1 Answer

0 votes
#include <iostream>
#include <unordered_set>

int removeDuplicates(int arr[], int size) {
    std::unordered_set<int> seen;
    int index = 0;
    
    for (int i = 0; i < size; i++) {
        if (seen.find(arr[i]) == seen.end()) {
            seen.insert(arr[i]);
            arr[index++] = arr[i];  // overwrite in-place
        }
    }
    
    return index; // new size of array
}

int main() {
    int arr[] = {4, 3, 2, 5, 4, 5, 1, 4, 5, 2, 3, 2};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    size = removeDuplicates(arr, size);
    
    for (int i = 0; i < size; i++) std::cout << arr[i] << " ";
}



/*
run:

4 3 2 5 1 

*/

 



answered Nov 30, 2025 by avibootz
...