解题思路:
设置一个当前值和当前值的计数器,初始化当前值为数组首元素,计数器值为1,然后从第二个元素开始遍历整个数组,对于每个被遍历到的值a[i]
1 如果a[i]==currentValue,则计数器值加1
2 如果a[i] != currentValue, 则计数器值减1,如果计数器值小于0,则更新当前值为a[i],并将计数器值重置为1
#include<iostream>
using namespace std;
int Find(int *a,int n)
{
int curval=a[0];
int count=1; //设置当前值和当前值的计数器
for(int i=1;i<n;i++)
{
if(curval == a[i]) //若相同则计数器加1
count++;
else
{
count--;
if(count < 0) //若不相同则计数器减1,若计数器小于0是则替换当前值
{
count =1;
curval = a[i];
}
}
}
return curval;
}
int main()
{
int num[10]={1,1,2,1,3,4,1,1,3,1};
int m = Find(num,10);
cout<<m<<endl;
return 0;
}