遍历数组,并且保存两个值:一个是数组中的一个数字,一个是次数。当遍历下一个数字时,如果下一个数字和当前保存的数字相同,则次数加1;如果不同则次数减1。如果次数为0,则需要保存下一个数字,并把次数设为1。由于要找的数字出现的次数比其他所有数字出现的次数之和还要多,所以要找的数字肯定是最后一次把次数设为1的那个数字。
代码如下:
#include<iostream>
using namespace std;
int lookup(int a[],int length)
{
int result=a[0];
int times=1;
for(int i=1;i<length;i++)
{
if(times==0)
{
result=a[i];
times=1;
}
else if(result==a[i])
times++;
else
times--;
}
return result;
}
int main()
{
int a[]={1,2,1,3,4,5,1,1,1,1,2,4};
int k=lookup(a,12);
cout<<k<<endl;
return 0;
}