Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Check if an array has a majority element

  • Difficulty Level : Easy
  • Last Updated : 21 Jun, 2021

Given an array, the task is to find if the input array contains a majority element or not. An element is 
Examples: 

Input : arr[] = {2, 3, 9, 2, 2}
Output : Yes
A majority element 2 is present in arr[]

Input  : arr[] = {1, 8, 9, 2, 5}
Output : No

A simple solution is to traverse through the array. For every element, count its occurrences. If the count of occurrence of any element becomes n/2, we return true. 
An efficient solution is to use hashing. We count occurrences of all elements. If count becomes n/2 or more return true.
Below is the implementation of the approach.  

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

C++




// Hashing based C++ program to find if there
// is a majority element in input array.
#include <bits/stdc++.h>
using namespace std;
 
// Returns true if there is a majority element
// in a[]
bool isMajority(int a[], int n)
{
    // Insert all elements in a hash table
    unordered_map<int, int> mp;
    for (int i = 0; i < n; i++)
        mp[a[i]]++;
     
    // Check if frequency of any element is
    // n/2 or more.
    for (auto x : mp)
      if (x.second >= n/2)
          return true;
    return false;
}
 
// Driver code
int main()
{
    int a[] = { 2, 3, 9, 2, 2 };
    int n = sizeof(a) / sizeof(a[0]);
    if (isMajority(a, n))
        cout << "Yes";
    else
        cout << "No";
    return 0;
}

Java




// Hashing based Java program
// to find if there is a
// majority element in input array.
import java.util.*;
import java.lang.*;
import java.io.*;
 
class Gfg
{
    // Returns true if there is a
    // majority element in a[]
    static boolean isMajority(int a[], int n)
    {
        // Insert all elements
        // in a hash table
        HashMap <Integer,Integer> mp = new
                            HashMap<Integer,Integer>();
         
        for (int i = 0; i < n; i++)
         
            if (mp.containsKey(a[i]))
                mp.put(a[i], mp.get(a[i]) + 1);
         
            else mp.put(a[i] , 1);
         
        // Check if frequency of any
        // element is n/2 or more.
        for (Map.Entry<Integer, Integer> x : mp.entrySet())
            
            if (x.getValue() >= n/2)
                return true;
        return false;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int a[] = { 2, 3, 9, 2, 2 };
        int n = a.length;
         
        if (isMajority(a, n))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}
 
// This code is contributed by Ansu Kumari

Python3




# Hashing based Python
# program to find if
# there is a majority
# element in input array.
 
# Returns true if there
# is a majority element
# in a[]
def isMajority(a):
     
    # Insert all elements
    # in a hash table
    mp = {}
     
    for i in a:
        if i in mp: mp[i] += 1
        else: mp[i] = 1
     
    # Check if frequency
    # of any element is
    # n/2 or more.
    for x in mp:
        if mp[x] >= len(a)//2:
            return True
    return False
 
# Driver code
a = [ 2, 3, 9, 2, 2 ]
 
print("Yes" if isMajority(a) else "No")
 
#This code is contributed by Ansu Kumari

C#




// Hashing based C# program
// to find if there is a
// majority element in input array.
using System;
using System.Collections.Generic;
 
class GFG
{
    // Returns true if there is a
    // majority element in a[]
    static Boolean isMajority(int []a, int n)
    {
        // Insert all elements
        // in a hash table
        Dictionary<int,
                   int> mp = new Dictionary<int,
                                            int>();
         
        for (int i = 0; i < n; i++)
        {
            if(mp.ContainsKey(a[i]))
            {
                var val = mp[a[i]];
                mp.Remove(a[i]);
                mp.Add(a[i], val + 1);
            }
            else
            {
                mp.Add(a[i], 1);
            }
        }
         
        // Check if frequency of any
        // element is n/2 or more.
        foreach(KeyValuePair<int, int> x in mp)
             
            if (x.Value >= n / 2)
                return true;
        return false;
    }
     
    // Driver code
    public static void Main (String[] args)
    {
        int []a = { 2, 3, 9, 2, 2 };
        int n = a.Length;
         
        if (isMajority(a, n))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
 
// This code is contributed by PrinciRaj1992

Javascript




<script>
// Hashing based Javascript program to find if there
// is a majority element in input array.
 
// Returns true if there is a majority element
// in a[]
function isMajority(a, n)
{
 
    // Insert all elements in a hash table
    let mp = new Map();
    for (let i = 0; i < n; i++){
        if(mp.has(a[i])){
            mp.set(a[i], mp.get(a[i]) + 1)
        }else{
            mp.set(a[i], 1)
        }
    }
     
    // Check if frequency of any element is
    // n/2 or more.
    for (let x of mp)
    if (x[1] >= n/2)
        return true;
    return false;
}
 
// Driver code
 
    let a = [ 2, 3, 9, 2, 2 ];
    let n = a.length;
    if (isMajority(a, n))
        document.write("Yes");
    else
        document.write("No");
         
        // This code is contributed by saurabh_jaiswal.
</script>

Output: 

Yes

Time Complexity: O(N)

Auxiliary Space: O(N)




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!