Question: Given an array of n numbers. Give an algorithm for finding the element which appears maximum number of times in the array?
Input: 3, 2, 1, 2, 2, 3
Output: 2
One simple and a brute force solution to this is, for each input element check whether there is any element with same value and for each occurrence, increment the counter. Each time, check the current counter with the max counter and update it if this value is greater than max counter. This we can solve just by using two simple for loops.
#include<stdio.h>
//to find the number with maximum duplicates in array
int maxDuplicatesBruteForce(int arr[], int size)
{
int counter = 0;
int max = 0;
int index_max = 0; //to store the index of maximum duplicated element
int i,j;
for(i=0;i<size;i++)
{
counter = 0;
for(j=0;j<size;j++)
{
//check for duplicates in the array
if(arr[i] == arr[j])
counter++;
}
//update the counter and max_index
if(counter > max)
{
max = counter;
index_max = i;
}
}
//return the maximum duplicated element
return arr[index_max];
}
int main(void)
{
int arr[] = {3, 2, 1, 2, 2, 3};
printf("Max duplicated = %d",maxDuplicatesBruteForce(arr, 6));
return 0;
}
Time Complexity:- O(n2)
Space Complexity:- O(1)
Click here for an even optimized approach.
