# Mode of frequencies of given array elements

Last Updated : 27 Aug, 2021

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 ` `using` `namespace` `std;`   `// Function to find the mode of the` `// frequency of the array` `int` `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 Code` `int` `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 approach` `import` `java.util.*;`   `class` `GFG{`   `// Function to find the mode of the` `// frequency of the array` `static` `int` `countFreq(``int` `arr[], ``int` `n)` `{` `    `  `    ``// Stores the frequencies` `    ``// of array elements` `    ``HashMap mp1 = ``new` `HashMap();`   `    ``// 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 mp2 = ``new` `HashMap();`   `    ``for``(Map.Entry 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 it : mp2.entrySet())` `    ``{` `        ``M = Math.max(M, it.getValue());` `    ``}`   `    ``// Search for this Mode` `    ``for``(Map.Entry 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 Code` `public` `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 approach` `from` `collections ``import` `defaultdict` `import` `sys`   `# Function to find the mode of the` `# frequency of the array` `def` `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 Code` `if` `__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 approach` `using` `System;` `using` `System.Collections.Generic;`   `class` `GFG{`   `// Function to find the mode of the` `// frequency of the array` `static` `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 Code` `public` `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

 ``

Output:

`2`

Time Complexity: O(N)
Auxiliary Space: O(N)