Given an array arr[], the task is to find the mode of frequencies of elements of the given array.
Examples:
Input: arr[] = {6, 10, 3, 10, 8, 3, 6, 4}, N = 8
Output: 2
Explanation:
Here (3, 10 and 6) have frequency 2, while (4 and 8) have frequency 1.
Three numbers have frequency 2, while 2 numbers have frequency 1.
Thus, the mode of the frequencies is 2.Input: arr[] = {5, 9, 2, 9, 7, 2, 5, 3, 1}, N = 9
Output:1
Approach: The idea is to find the frequency of the frequencies of all array elements. Finally, compute the mode of the frequencies.
Below is the implementation of the above approach:
C++
// C++ program of the// above approach#include <bits/stdc++.h>using namespace std;// Function to find the mode of the// frequency of the arrayint countFreq(int arr[], int n){ // Stores the frequencies // of array elements unordered_map<int, int> mp1; // Traverse through array // elements and // count frequencies for (int i = 0; i < n; ++i) { mp1[arr[i]]++; } // Stores the frequencies's of // frequencies of array elements unordered_map<int, int> mp2; for (auto it : mp1) { mp2[it.second]++; } // Stores the minimum value int M = INT_MIN; // Find the Mode in 2nd map for (auto it : mp2) { M = max(M, it.second); } // search for this Mode for (auto it : mp2) { // When mode is find then return // to main function. if (M == it.second) { return it.first; } } // If mode is not found return 0;}// Driver Codeint main(){ int arr[] = { 6, 10, 3, 10, 8, 3, 6, 4 }; int n = sizeof(arr) / sizeof(arr[0]); cout << countFreq(arr, n); return 0;} |
Java
// Java program of the// above approachimport java.util.*;class GFG{// Function to find the mode of the// frequency of the arraystatic int countFreq(int arr[], int n){ // Stores the frequencies // of array elements HashMap<Integer, Integer> mp1 = new HashMap<Integer, Integer>(); // Traverse through array // elements and // count frequencies for(int i = 0; i < n; ++i) { if (mp1.containsKey(arr[i])) { mp1.put(arr[i], mp1.get(arr[i]) + 1); } else { mp1.put(arr[i], 1); } } // Stores the frequencies's of // frequencies of array elements HashMap<Integer, Integer> mp2 = new HashMap<Integer, Integer>(); for(Map.Entry<Integer, Integer> it : mp1.entrySet()) { if (mp2.containsKey(it.getValue())) { mp2.put(it.getValue(), mp2.get(it.getValue()) + 1); } else { mp2.put(it.getValue(), 1); } } // Stores the minimum value int M = Integer.MIN_VALUE; // Find the Mode in 2nd map for(Map.Entry<Integer, Integer> it : mp2.entrySet()) { M = Math.max(M, it.getValue()); } // Search for this Mode for(Map.Entry<Integer, Integer> it : mp2.entrySet()) { // When mode is find then return // to main function. if (M == it.getValue()) { return it.getKey(); } } // If mode is not found return 0;}// Driver Codepublic static void main(String[] args){ int arr[] = { 6, 10, 3, 10, 8, 3, 6, 4 }; int n = arr.length; System.out.print(countFreq(arr, n));}}// This code is contributed by Amit Katiyar |
Python3
# Python3 program of the# above approachfrom collections import defaultdictimport sys# Function to find the mode of the# frequency of the arraydef countFreq(arr, n): # Stores the frequencies # of array elements mp1 = defaultdict (int) # Traverse through array # elements and # count frequencies for i in range (n): mp1[arr[i]] += 1 # Stores the frequencies's of # frequencies of array elements mp2 = defaultdict (int) for it in mp1: mp2[mp1[it]] += 1 # Stores the minimum value M = -sys.maxsize - 1 # Find the Mode in 2nd map for it in mp2: M = max(M, mp2[it]) # search for this Mode for it in mp2: # When mode is find then return # to main function. if (M == mp2[it]): return it # If mode is not found return 0# Driver Codeif __name__ == "__main__": arr = [6, 10, 3, 10, 8, 3, 6, 4] n = len(arr) print (countFreq(arr, n)) # This code is contributed by Chitranayal |
C#
// C# program of the// above approachusing System;using System.Collections.Generic;class GFG{// Function to find the mode of the// frequency of the arraystatic int countFreq(int []arr, int n){ // Stores the frequencies // of array elements Dictionary<int, int> mp1 = new Dictionary<int, int>(); // Traverse through array // elements and // count frequencies for(int i = 0; i < n; ++i) { if (mp1.ContainsKey(arr[i])) { mp1[arr[i]] = mp1[arr[i]] + 1; } else { mp1.Add(arr[i], 1); } } // Stores the frequencies's of // frequencies of array elements Dictionary<int, int> mp2 = new Dictionary<int, int>(); foreach(KeyValuePair<int, int> it in mp1) { if (mp2.ContainsKey(it.Value)) { mp2[it.Value] = mp2[it.Value] + 1; } else { mp2.Add(it.Value, 1); } } // Stores the minimum value int M = int.MinValue; // Find the Mode in 2nd map foreach(KeyValuePair<int, int> it in mp2) { M = Math.Max(M, it.Value); } // Search for this Mode foreach(KeyValuePair<int, int> it in mp2) { // When mode is find then return // to main function. if (M == it.Value) { return it.Key; } } // If mode is not found return 0;}// Driver Codepublic static void Main(String[] args){ int []arr = { 6, 10, 3, 10, 8, 3, 6, 4 }; int n = arr.Length; Console.Write(countFreq(arr, n));}}// This code is contributed by Amit Katiyar |
Javascript
<script>// Javascript program of the// above approach// Function to find the mode of the// frequency of the arrayfunction countFreq(arr,n){ // Stores the frequencies // of array elements let mp1 = new Map(); // Traverse through array // elements and // count frequencies for(let i = 0; i < n; ++i) { if (mp1.has(arr[i])) { mp1.set(arr[i], mp1.get(arr[i]) + 1); } else { mp1.set(arr[i], 1); } } // Stores the frequencies's of // frequencies of array elements let mp2 = new Map(); for(let [key, value] of mp1.entries()) { if (mp2.has(value)) { mp2.set(value, mp2.get(value) + 1); } else { mp2.set(value, 1); } } // Stores the minimum value let M = Number.MIN_VALUE; // Find the Mode in 2nd map for(let [key, value] of mp2.entries()) { M = Math.max(M, value); } // Search for this Mode for(let [key, value] of mp2.entries()) { // When mode is find then return // to main function. if (M == value) { return key; } } // If mode is not found return 0;}// Driver Codelet arr = [ 6, 10, 3, 10, 8, 3, 6, 4];let n = arr.length;document.write(countFreq(arr, n)); // This code is contributed by avanitrachhadiya2155</script> |
2
Time Complexity: O(N)
Auxiliary Space: O(N)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Find More Information here on that Topic: geeksforgeeks.org/mode-of-frequencies-of-given-array-elements/ […]
… [Trackback]
[…] Read More here to that Topic: geeksforgeeks.org/mode-of-frequencies-of-given-array-elements/ […]