用个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];
}

本文介绍了如何使用HashMap快速找到数组中的多数元素,以及利用中位数的巧妙思路。通过实例展示了如何避免长度为1时的特殊情况,并对比了两种方法的适用场景。
821

被折叠的 条评论
为什么被折叠?



