SDNUOJ 1321眾數
阿新 • • 發佈:2018-12-09
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; }