Check if an array has a majority element - GeeksforGeeks

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.  
C++
Java
Python3
C#
Javascript
// 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 codeint 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;}
// 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
# 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 codea = [ 2, 3, 9, 2, 2 ] print("Yes" if isMajority(a) else "No") #This code is contributed by Ansu Kumari
// 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
<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)
bhatnagarm
princiraj1992
rohitsingh07052
_saurabh_jaiswal
Arrays
Searching
Arrays
Searching
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Arrays in Java
Arrays in C/C++
Write a program to reverse an array or string
Program for array rotation
Largest Sum Contiguous Subarray
Binary Search
Linear Search
Search an element in a sorted and rotated array
Find the Missing Number
K'th Smallest/Largest Element in Unsorted Array | Set 1