/** 面试题 17.10. 主要元素
* @author 作者 Your-Name:
* @version 创建时间:2020年3月5日 下午8:33:46
* 如果数组中多一半的数都是同一个,则称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。
示例 1:
输入:[1,2,5,9,5,9,5,5,5]
输出:5
示例 2:
输入:[3,2]
输出:-1
示例 3:
输入:[2,2,1,1,1,2,2]
输出:2
*/
public class 主要元素 {
Map<Integer,Integer> hsm = new HashMap<>();
public int majorityElement(int[] nums) {
int len = nums.length/2;
int max = 0;
int temp=0;
for(int i=0;i<nums.length;i++)
{
hsm.put(nums[i], hsm.getOrDefault(nums[i], 0)+1);
}
for(int n:hsm.keySet())
{
if(hsm.get(n)>max)
{
max = hsm.get(n);
temp = n;
}
}
if(max>len)
return temp;
return -1;
}
}