# Find majority element using Hashing

• Difficulty Level : Easy
• Last Updated : 28 Nov, 2022

Given an array of size N, find the majority element. The majority element is the element that appears more than times in the given array.

Examples:

Input: [3, 2, 3]
Output: 3

Input: [2, 2, 1, 1, 1, 2, 2]
Output: 2

The problem has been solved using 4 different methods in the previous post. In this post hashing based solution is implemented. We count occurrences of all elements. And if count of any element becomes more than n/2, we return it.

Hence if there is a majority-element, it will be the value of the key.

Below is the implementation of the above approach:

## C++

 #includeusing namespace std;  #define ll long long int  // function to print the majority Numberint majorityNumber(int arr[], int n){    int ans = -1;    unordered_map<int, int>freq;    for (int i = 0; i < n; i++)    {        freq[arr[i]]++;        if (freq[arr[i]] > n / 2)            ans = arr[i];    }    return ans;}   // Driver codeint main(){    int a[] = {2, 2, 1, 1, 1, 2, 2};    int n = sizeof(a) / sizeof(int);    cout << majorityNumber(a, n);     return 0;}  // This code is contributed // by sahishelangia

## Java

 import java.util.*;  class GFG {  // function to print the majority Numberstatic int majorityNumber(int arr[], int n){    int ans = -1;    HashMap freq = new HashMap();                                              for (int i = 0; i < n; i++)    {        if(freq.containsKey(arr[i]))        {            freq.put(arr[i], freq.get(arr[i]) + 1);        }        else        {            freq.put(arr[i], 1);        }        if (freq.get(arr[i]) > n / 2)            ans = arr[i];    }    return ans;}   // Driver codepublic static void main(String[] args) {    int a[] = {2, 2, 1, 1, 1, 2, 2};    int n = a.length;    System.out.println(majorityNumber(a, n));}}   // This code is contributed by Princi Singh

## Python3

 # function to print the # majorityNumberdef majorityNumber(nums):          # stores the num count     num_count = {}          # iterate in the array     for num in nums:                  if num in num_count:            num_count[num] += 1        else:            num_count[num] = 1      for num in num_count:        if num_count[num] > len(nums)/2:            return num    return -1  # Driver Codea = [2, 2, 1, 1, 1, 2, 2]print(majorityNumber(a))

## C#

 // C# implementation of the approachusing System;using System.Collections.Generic;      class GFG {  // function to print the majority Numberstatic int majorityNumber(int []arr, int n){    int ans = -1;    Dictionary<int,               int> freq = new Dictionary<int,                                          int>();                                              for (int i = 0; i < n; i++)    {        if(freq.ContainsKey(arr[i]))        {            freq[arr[i]] = freq[arr[i]] + 1;        }        else        {            freq.Add(arr[i], 1);        }        if (freq[arr[i]] > n / 2)            ans = arr[i];    }    return ans;}   // Driver codepublic static void Main(String[] args) {    int []a = {2, 2, 1, 1, 1, 2, 2};    int n = a.Length;    Console.WriteLine(majorityNumber(a, n));}}  // This code is contributed by Rajput-Ji

## Javascript

 

Output

2

Complexity Analysis:

• Time Complexity : O(n)
• Auxiliary Space : O(n)

My Personal Notes arrow_drop_up