我们在遍历数组的时候保留两个变量,一个是数组中的数字,另一个是数字出现的次数。当我们遍历到下一个数字的时候,如果下一个数字与我们当前保存的数字相同,则个数加1,如果不同则减1,由于我们要找的数字出现的次数比其他数字出现的次数的总和还多,那么要找的数字肯定是最后一个使次数为1时对应的数字。
代码如下:
#include<iostream>
using namespace std;
int Find(int array[],int length);
int main()
{
int number[10]={1,2,3,4,4,4,4,4,4,5};
cout<<Find(number,10);
return 0;
}
int Find(int* array,int length)
{
int result = array[0];
int times=1;
for(int i=0;i<length-1;i++)
{
if(times==0)
{
result=array[i];
times=1;
}
else if(array[i]==result)
times++;
else
times--;
}
return result;
}