利用数组特性一个数出现次数超过了数组元素个数的一半也就是说这个数出现的次数比其他数出现的次数总和还要多可以设置一个result来记录结果一个count记录这个数出现的次数count初值为如果下一个数等于result则count++不等于result则count--如果count等于0则result等于下一个数当这个数组中没有出现次数超过一半的数返回0 设置一个全局的枚举变量将其值置为false
enum Flag
{
false = 0,
true = 1
};
enum Flag flag = true;
int FindMoreHalfNum(const int* num,int len)
{
int i = 0;
int result = 0;
int count = 1;
if (NULL == num || 0 == len)
{
flag = false;
return 0;
}
result = num[i];
for (i = 1; i<len; i++)
{
if (count == 0)
{
count = 1;
result = num[i];
}
else if (num[i] == result)
{
count++;
}
else
{
count--;
}
}
if (!count)
{
flag = false;
return 0;
}
return result;
}