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