本题用了两种思路
思路一:将数组进行排序,由于某个数出现次数超过了数组大小的一半,那么nums[nums.length/2]必然是这个数
思路二:使用HashMap,key为数组中的数字,value为数字出现的次数。记录完之后遍历HashMap,当遇到value大于nums.length/2的时候,返回key值
代码如下注释掉的部分为思路二的代码,未被注释的是思路一的代码:
class Solution {
public int majorityElement(int[] nums) {
Arrays.sort(nums);
return nums[nums.length/2];
// int len=nums.length;
// HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
// for(int i=0;i<len;i++)
// {
// if(map.containsKey(nums[i]))
// {
// int val=map.get(nums[i]);
// map.put(nums[i],val+1);
// }
// else
// map.put(nums[i],1);
// }
// for(int k : map.keySet())
// {
// if(map.get(k)>len/2)
// return k;
// }
// return 0;
}
}