用个map就搞定了,注意lenght为1 时的情况
先判断是否有这个key,如果没有value设为1
如果有 value+1
public static int majorityElement(int[] nums) {
/** 创建一个HashMap key用来存放数组元素,value用来存放出现次数*/
if (nums.length == 1){
return nums[0];
}
HashMap<Integer, Integer> hashMap = new HashMap<>();
for (int i :
nums) {
if (!hashMap.containsKey(i)) {
hashMap.put(i, 1);
continue;
}
hashMap.put(i,hashMap.get(i)+1);
if (hashMap.get(i) > ((double)nums.length)/2) return i;
}
return 0;
}
还有一种,取中位数
public int majorityElement(int[] nums) {
Arrays.sort(nums);
return nums[nums.length / 2];
}