How to extract the unique integers from an array excluding duplicates in C

1 Answer

0 votes
#include <stdio.h>
#include <stdbool.h>

#define MAX 1024 // Maximum possible unique values (adjust as needed)

void getUniqueExcludeDuplicates(int* arr, int size, int* result, int* resultSize) {
    int frequency[MAX] = {0}; // Array to count occurrences of each number

    // Count frequencies of each number in the input array
    for (int i = 0; i < size; i++) {
        frequency[arr[i]]++;
    }

    // Collect numbers that appear only once
    *resultSize = 0; // Initialize the result size
    for (int i = 0; i < size; i++) {
       if (frequency[arr[i]] == 1) {
            result[(*resultSize)++] = arr[i];
        }
    }
}

int main() {
    int arr[] = {1, 2, 3, 5, 8, 3, 1, 1, 0, 6, 5, 7, 3, 1, 4, 9};
    int size = sizeof(arr) / sizeof(arr[0]);

    // Array to store the unique values
    int result[MAX];
    int resultSize;

    // Call the function to exclude duplicates
    getUniqueExcludeDuplicates(arr, size, result, &resultSize);

    // Print the result
    printf("Unique values (excluding duplicates): ");
    for (int i = 0; i < resultSize; i++) {
        printf("%d ", result[i]);
    }
    printf("\n");

    return 0;
}


/*
run:

Unique values (excluding duplicates): 2 8 0 6 7 4 9 

*/

 



answered Mar 28, 2025 by avibootz
...