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;
}
原文地址:https://www.cnblogs.com/dzzy/p/8504574.html