Open In App

# 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```

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++

 `// 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<``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 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<``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

 ``

Output

`Yes`

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