题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。
#include <stdio.h>
#include <stdlib.h>
/*找到数组中出现次数超过一半的一个数*/
int findMaxTimesNum(int* a, int n)
{
int i;
int tmp;
int count = 0;
int max = 0;
for (i=0; i<n; i++)
{
if (count == 0)
{
tmp = a[i];
count++;
}
else if (a[i] == tmp)
{
count++;
}
else
{
count--;
}
}
return tmp;
}
int main()
{
int a[] = {1, 2, 1, 3, 1};
printf("%d\n", findMaxTimesNum(a, 5));
return 0;
}