问题描述
问题:找出一组数中个数超过一半的数,时间复杂度O(n)
输入:一组数(其中必有一个数的个数是超过一半的)例: 1 1 2 4 1 3 1 2 1
输出:数字 例: 1
代码
public static int findMostApperse(int[] a){
int candidate=0;
int count=0;
int len=a.length;
for(int i=0;i<len;i++){
if(count==0){
candidate=a[i];
count=1;
}else{
if(candidate==a[i])
count++;
else
count--;
}
}
return candidate;
}