题目要求:
分析:
碰到这种题目就应该想到用HashMap来存储,这里key用来存储nums[i],value用来存储其出现的次数。当一个nums[i]出现的次数大于n/2次时,就可以return这个数字了。
这里要注意边界判断问题,如果不判断nums.length == 1的情况,就会报错。
切记:每次都不要漏掉边界判断!!!
具体代码如下:
class Solution {
public int majorityElement(int[] nums) {
int n = nums.length;
if(n == 1)
return nums[0];
Map<Integer, Integer> map = new HashMap<>();
for(int num : nums) {
if(!map.containsKey(num)) {
map.put(num, 1);
} else {
int count = map.get(num);
count ++;
map.put(num, count);
if(count > n / 2)
return num;
}
}
return 0;
}
}
这个代码的性能并不是很好,懒得看别人的了,不管了。