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 <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)
Please Login to comment...