方法一
摩尔投票法
用x记录当前众数,遍历数组,当前数字等于众数时vote加一,否则减一。当vote是0时更换众数。
public int majorityElement(int[] nums) {
int x = nums[0];
int vote = 0;
for(int k:nums){
if(vote == 0) x = k;
if(k == x){
vote++;
}else{
vote--;
}
}
return x;
}
}
方法二
哈希表存储遍历
public int majorityElement(int[] nums) {
Map<Integer,Integer> map = new HashMap<>();
for(int i:nums){
if(map.containsKey(i)){
map.put(i,map.get(i)+1);
}else{
map.put(i,1);
}
}
int max = 0,result = 0;
for(Integer key:map.keySet()){
if(map.get(key)>max){
max = map.get(key);
result = key;
}
}
return result;
}
}