int MoreThanHalfNum_Solution(int* numbers, int numbersLen ) { // write code here //这个方法参考2013年408考研的代码题的最优解法 int count=0,a=numbers[0]; //a用于记录可能是出现超过一半的数组,出现一次count+1,不是则+1 for(int i=1;i<numbersLen;i++){ if(numbers[i]==a) count++; //如果这个数是可能数a,则count+1 else{ if(count>0) count--; //若这个数不是,则判断count,count>0则表明a还是有可能是的 else{ a=numbers[i]; //否则的话替换掉,因为目标数出现超过一半,所以最终还是会替换回来的 count=1; } } } return a; }