题目链接:
https://cn.vjudge.net/problem/HDU-1029
题意:
给你N个数字,需要找出至少出现(N+1)/2次的数字
无需排序,只需要标记每个数字出现的次数
题解:
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <stack>
#include <queue>
#include <vector>
#include <cmath>
#include <algorithm>
#define mem(a,b) memset(a,b,sizeof(a))
#define maxnum 99999
#define inf 0x3f3f3f3f
using namespace std;
int v[maxnum],d1[maxnum];
int main()
{
int a,b,c,d=1;
while(cin>>a)
{
c=(a+1)/2;
memset(v,0,sizeof(v));
memset(d1,0,sizeof(d1));
for(int i=0;i<a;i++)
{
cin>>b;
if(b==v[b])
{
d1[b]++;//标记数组
v[b]=b;
}
else
{
v[b]=b;
}
//cout<<v[b]<<endl;
}
//cout<<d1[1];
for(int i=0;i<99999;i++)
{
if(d1[i]>c-1||d1[i]==c-1)
{
cout<<i<<endl;
}
}
}
return 0;
}