众数
题目描述
给定一个长度为N的非降数列,求数列中出现次数最多的数。
如果答案不唯一,输出其中最小的数。
输入格式
输入数据第一行是一个整数T(1<=T<=100),表示测试数据的组数。注意各组测试数据是相互独立的。
对于每组测试数据:
第一行是一个正整数N(1<=N<=100 ),表示数列长度。
第二行有N个正整数,整数之间用空格隔开,所有的整数都不超过105,表示这个数列。
输出格式
对于每组测试数据,输出一个整数。
输入样例
2
4
1 1 1 2
5
1 1 2 2 3
输出样例
1
1
#include<iostream> using namespace std; struct num { int weight = 0; int count = 0; }num[100]; int a[100]; int main() { int T,N,temp,max,j,minWeight; cin >> T; if (T > 100) { cout << "组数过多,请重新输入:"; cin >> T; } while (T--) { cin >> N; for (int i = 0; i < N; i++) { cin >> temp; if (temp > 100000) { cout << "输入数值过大,请重新输入:" << endl; cin >> temp; } j = 0; bool flag = false; while (num[j].count != 0) { if (temp == num[j].weight) { num[j].count++; flag = true; } j++; } if (flag == false) { num[j].weight = temp; num[j].count++; } } max = 0; minWeight = 0; for (int i = 0; i < j; i++) { if (num[i].count > max) { max = num[i].count; minWeight = num[i].weight; } cout << minWeight<<endl; } } return 0; }