int a[]={2,3,2,2,2,2,2,5,4,1,2,3},求出超过一半的数字是2
一一抵消,计数器表示超出一半的元素与其他元素抵消后剩余个数
int MoreThanHalfNum(int *arr, int size)
{
if (arr == NULL || size < 0)
return NULL;
int count = 1;
int res = arr[0];
for (int i = 1; i < size; ++i)
{
if (count == 0)
{
res = arr[i];
count++;
}
else if (res == arr[i])
count++;
else
count--;
}
return res;
}