时间复杂度o(n) 扫描一次
int findHlaf(int a[], int N)
{
int sum1 = 0;//最后一个元素的个数
int sum2 = 0;
int candidate;
int i;
for(i=0;i<N-1;i++)//扫描前N-1个元素
{
if(a[i] == a[N-1])//判断当前元素与最后一个是否相等
sum1++;
if(sum2 == 0)
{
candidate = a[i];
sum2++;
}
else
{
if(a[i] == candidate)
sum2++;
else
sum2--;
}
}
if((sum1+1) == N/2)
return a[N-1];
else
return candidate;
}