数组中出现次数超过一半的数字
数组中出现次数超过一半的数字
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; }