Check if an array has a majority element

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

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

A simple solution is to traverse through array. For every element, count its occurrences. If 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.

C++

 // Hashing based C++ program to find if there // is a majority element in input array. #include 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 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);     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 mp = new                              HashMap();                    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 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 mp = new Dictionary();                    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 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

Output:

Yes

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : bhatnagarm, princiraj1992

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.