数组中出现次数超过一半的数字
数组中出现次数超过一半的数字
https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=117&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey
//对数组同时去掉两个不同的数字 如果存在结果 那么最后剩下的一定是答案。最后一步需要判断最后剩下的是否满足超过一半 如果不满足就说明不存在,如果存在的话,就一定会满足。
public int MoreThanHalfNum_Solution(int [] array) {
if(array==null) return 0;
int count = 1;
int pre = array[0];
for(int i=1;i<array.length;i++){
if(array[i]==pre){
count++;
}else{
count--;
if(count==0){
if(i+1<array.length){
pre = array[i+1];
count = 1;
}else return 0;
}
}
}
int cnt =0;
//判断最后剩下的输是否满足次数超过一半
for(int i=0;i<array.length;i++){
if(pre==array[i]){
cnt++;
}
}
if(cnt>array.length/2) return pre;
return 0;
}