


A majority element is an element that occurs more than floor('N' / 2) times in the array.
The first line of input contains an integer 'T' representing the number of test cases.
The first line of each test case contains a single positive integer ‘N’ representing the size of the array/list.
The second line of each test case contains ‘N’ single space-separated integers representing the array elements of 'ARR'.
For each test case, print an integer denoting the majority element present in the array. Print-1 in case of no majority element.
You don't need to print the output, it has already been taken care of. Just implement the given function.
1 <= T <= 100
1 <= N <= 5 * 10^3
-10^5 <= ARR[i] <= 10^5
Where 'ARR[i]' denotes the element at the 'i'th index in the array/list 'ARR'.
Time limit: 1 sec
The basic idea is to traverse the array and count the frequency of each element.
We will run two nested loops till ‘N’ and store the count of each array element in ‘maxCount’. If for any element, ‘maxCount' becomes greater than ‘N’ / 2, we will return that element as the majority element.
If no majority element is found, we will return -1.
We will maintain a hashmap to store element-frequency pairs. We will traverse the array and store the frequency of each element in the hashmap.
If the frequency of any element becomes greater than the floor(N/2), we will return it as the majority element.
If no majority element is found, we will return -1.
We can find the majority element in linear time and constant space using Moore’s voting algorithm. It is based on the fact that since the majority element occurs more than floor('N' / 2) times, its frequency will be greater than the combined frequencies of all other elements.
The algorithm gives the correct answer only if the majority element exists in the array. So, in the end, we have to check the frequency of the majority element to confirm.
The steps are as follows: