方法1:用一个map存放值对应出现的次数,遍历数组,没一次都用次数对比max次数,然后决定是否更新
class Solution {
public int majorityElement(int[] nums) {
Map<Integer,Integer> map=new HashMap();
int maxci=0;
int val=0;
for(int i=0;i<nums.length;i++){
map.put(nums[i],map.getOrDefault(nums[i],0)+1);
if(map.get(nums[i])>maxci){
maxci=map.get(nums[i]);
val=nums[i];
}
}
return val;
}
}
方法2:排序法
class Solution {
public int majorityElement(int[] nums) {
Arrays.sort(nums);
return nums[nums.length/2];
}
}
方法3:摩尔投票法
文章已经收藏了
class Solution {
public int majorityElement(int[] nums) {
int count=0;
int val=0;
for(int i=0;i<nums.length;i++){
if(count==0){
val=nums[i];
count++;
}else{
if(nums[i]!=val){
count--;
}else{
count++;
}
}
}
return val;
}
}