1321.众数 SDNUOJ 1321
Description
给出n个数,求这n个数的众数。
众数的定义是:是一组数据中出现次数最多的数值,叫众数,有时众数在一组数中有好几个。
Input
第一行有个整数T,表示测试组数T<=10.
接下来有T个测试组,每个测试组的第一行有整数n,表示有n个数。
接下来1行有n个数,第i个数ai ,0<=ai<1000
n<=1000
Output
对于每个测试组,请把答案在一行中输出,如果有多个众数,则按照从小到大的顺序把他们输出。
Sample Input
1
5
3 3 2 2 4
Sample Output
2 3
#include <algorithm>
#include <cstdio>
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int main()
{
int t;
cin >> t;
while(t--)
{
int n;
cin >> n;
int a[1005] = {};
int num[1005] = {};
for(int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
sort(a, a + n);
int max_num = 0;
int max_a;
for(int i = 0; i < 1000; i++)
{
for(int j = 0; j < n; j++)
{
if(i == a[j])
{
num[i] = upper_bound(a, a + n, i) - lower_bound(a, a + n, i);
if(num[i] > max_num)
{
max_num = num[i];
max_a = a[i];
}
break;
}
}
}
vector<int> vec;
vec.clear();
for(int i = 0; i < 1000; i++)
{
if(num[i] == max_num)
vec.push_back(i);
}
reverse(vec.begin(), vec.end());
while(!vec.empty())
{
cout << vec.back();
if(vec.size() != 1)
cout << " ";
vec.pop_back();
}
cout << '\n';
}
return 0;
}