数组中出现次数超过一半的数字_牛客题霸_牛客网 (nowcoder.com)
// //jz-数组中出现次数超过一半的数字
// //map
// import java.util.*;
// import java.util.HashMap;
// public class Solution {
// public int MoreThanHalfNum_Solution(int [] array) {
// if(array==null||array.length==0){
// return -1;
// }
// HashMap<Integer,Integer> map=new HashMap<>();
// for(int i=0;i<array.length;i++){
// if(map.containsKey(array[i])){
// map.put(array[i],map.get(array[i])+1);
// }else{
// map.put(array[i],1);
// }
// if(map.get(array[i])>array.length/2){
// return array[i];
// }
// }
// return -1;
// }
// }
//众数
import java.util.*;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
if(array==null||array.length==0){
return -1;
}
int ret=array[0];
int times=1;
for(int i=1;i<array.length;i++){
if(times==0){
ret=array[i];
times=1;
}else{
if(array[i]==ret){
times++;
}else{
times--;
}
}
}
int count=0;
for(int i=0;i<array.length;i++){
if(array[i]==ret){
count++;
}
}
return (count>array.length/2)?ret:-1;
}
}