Â

Condition 1: If Array is sorted.

#include <stdio.h>

int main()

{

int arr[] = {3, 6, 8, 8, 10, 12, 15, 15, 15, 20};

int lastDuplicate = 0;

int n;

for (int i = 0; i < n; i++)

{

if (arr[i] == arr[i + 1] && arr[i] != lastDuplicate)

{

printf("%d\n", arr[i]);

lastDuplicate = arr[i];

}

}

return 0;

}

Count duplicates in a sorted array

#include <stdio.h>

int main()

{

int arr[10] = {3, 6, 8, 8, 10, 12, 15, 15, 15, 20};

int lastDuplicate = 0;

int n, j;

for (int i = 0; i < n - 1; i++)

{

if (arr[i] == arr[i + 1])

{

j = i + 1;

while (arr[j] == arr[i])

{

j++;

}

printf("%d is appearing %d times\n", arr[i], j - i);

i = j - 1;

}

}

return 0;

}

**Using Hash Table (Best) - works for sorted and unsorted arrays**

#include <stdio.h>

int main()

{

// int arr[10] = {3, 6, 8, 8, 10, 12, 15, 15, 15, 20};

int arr[10] = {8, 3, 6, 4, 6, 5, 6, 8, 2, 7};

int h[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

int n = 10, i;

for (i = 0; i < n; i++)

{

h[arr[i]]++;

}

for (i = 0; i < 20; i++)

{

if (h[i] > 1)

{

printf("%d is appearing %d times\n", i, h[i]);

}

}

return 0;

}

Finding duplicates in the unsorted array

#include <stdio.h>

int main()

{

int a[] = {8, 3, 6, 4, 6, 5, 6, 8, 2, 7};

int n = 10;

int count;

for (int i = 0; i < n - 1; i++)

{

count = 1;

if (a[i] != -1)

{

for (int j = i + 1; j < n; j++)

{

if (a[i] == a[j])

{

count++;

a[j] = -1;

}

}

if (count > 1)

printf("%d %d\n", a[i], count);

}

}

return 0;

}

## 0 Comments: