编号统计
时间限制:2000 ms | 内存限制:65535 KB
难度:2
- 描述
- zyc最近比较无聊,于是他想去做一次无聊的统计一下。他把全校同学的地址都统计了一下(zyc都将地址转化成了编码),然后他希望知道那个地方的同学最多(如果同学最多的地方有多个,输出编号最小的一个)。
- 输入
- 第一行输入一个正整数T(0<T<=11)表示有T组测试数据
每组测试数据第一行输入一个正整数N(0<N<200000)表示有N个编号,随后输入N个编码(编码由数字组成且少于十位) - 输出
- 每组数据输出占一行输出出现次数最多的编号
- 样例输入
-
1 5 12345 456 45 78 78
- 样例输出
-
78
-
我的:
-
#include<iostream>
#include<algorithm>using namespace std;
int c[200000];
int main()
{
int t,n,i,k,m,l,little;
cin>>t;
while(t--)
{
cin>>n;
k=1;
m=1;
for(i=0; i<n; i++)
cin>>c[i];
sort(c,c+n);
little=c[0];
for(i=1; i<n; i++)
{
if(c[i]==c[i-1])
{
k++;
l=c[i];
}
else
{
if(m<k)
{
m=k;
little=l;
}
k=1;
}
}
cout<<little<<endl;
}
return 0;
} -
高手的:
02.
#include<iostream>
03.
#include<map> //容器技术
04.
#include<cstdio>
05.
using
namespace
std;
06.
int
main()
07.
{
08.
09.
int
t;cin>>t;
10.
while
(t--){
11.
map<
int
,
int
> m;
12.
int
n,v;cin>>n;
13.
for
(
int
i=0;i<n;i++){
14.
scanf
(
"%d"
,&v);
15.
m[v]++;
16.
}
17.
int
c=0;
18.
map<
int
,
int
>::iterator it0=m.begin();
19.
for
(map<
int
,
int
>::iterator it=m.begin();it!=m.end();it++)
20.
if
(c<it->second)c=it->second,it0=it;
21.
cout<<it0->first<<endl;
22.
}
23.
24.
}