题意
给你n个数字,你需要找出出现至少(n+1)/2次的数字 现在需要你找出这个数字是多少?
解题
用b[i]表示i出现的次数。
遍历一遍数组a,统计每个值出现的次数。最后输出出现次数符合要求的值。
AC代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=1e6+7;
int a[maxn],b[maxn];
int main()
{
int n,ans=-1;
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
memset(b,0,sizeof(a));
for(int i=0;i<n;i++)
b[a[i]]++;
for(int i=0;i<n;i++)
if(b[a[i]]>=(n+1)/2)
{
ans=a[i];
break;
}
printf("%d\n",ans);
}
return 0;
}