变量设计,一个变量,存数num,另一个存这个数出现的次数times.
初始:num存第一个数,times表示num出玩的次数为1
当遇到num这个数,times就加1,没有遇到就times减1。当times为0时,也就是num中没有计数了,也就是当一个新数进来时,就开始计数。
继续这样去遍历。。。。。。
int MoreThanHalfNum(int *a , int n ) { int i , k , num = a[0]; int times = 1; for(i = 1 ; i < n ; ++i) { if(times == 0) { num = a[i]; times = 1; } else if(a[i] != num) --times; else ++times; } k = 0; for(i = 0 ; i < n ; ++i) { if(a[i] == num) ++k; } if(k*2 <= n) return -1; //没有找到 else return num; //找到 }