BUPT复试专题—众数(2014)
题目描述
有一个长度为N的非降数列,求数列中出现最多的数,若答案不唯一输出最小的数
输入
第一行T表示测试数据的组数(T<100)
对于每组测试数据:
第一行是一个正整数N表示数列长度
第二行有N个整数用空格空开,所有整数不超过10^5
输出
对于每组测试数据,输出一个整数
样例输入
2
4
1 1 1 2
5
1 1 2 2 3
样例输出
1
1
来源
2014机考A题 转载请注明出处
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<string> #include<cmath> using namespace std; int donser(const void *a,const void *b) { return *(int *)a-*(int *)b; //小到大 } int main() { int i,t,m,d[101]; scanf("%d",&t); while(t--) { scanf("%d",&m); for(i=0;i<m;i++) { scanf("%d",&d[i]); } qsort(d,m,sizeof(int),donser); int max=0,max_size=0; for(i=m-1;i>=0;i--) { int temp=upper_bound(d,d+m,d[i])-lower_bound(d,d+m,d[i]); if(temp>=max_size) { max_size=temp; max=d[i]; } } cout<<max<<endl; } return 0; }