Site icon Study Algorithms

Find the element which appears maximum number of times in an array?

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.

Exit mobile version