题目:
问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输入的第二行有n个整数s 1, s 2, …, s n (1 ≤ s i ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。 输出格式 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。 样例输入 6 10 1 10 20 30 20 样例输出 10
已AC的我的代码:
#include <iostream> #include <vector> #include <algorithm> #include <fstream> using namespace std; int main() { int i,j,N; ifstream cin("test.txt"); while(cin>>N) { int num; vector<int> v; for(i=0;i<N;i++) { cin>>num; v.push_back(num); } sort(v.begin(),v.end(),less<int>()); num=v[0]; int count=1,min_num=v[0],min_count=1; for(i=1;i<N-1;i++) { if(v[i]>v[i-1]) { count=1; if(count>min_count) min_num=v[i]; } else if(v[i]==v[i-1]) { count++; if(count>min_count) { min_count=count; min_num=v[i]; } } } if(v[N-1]==min_num) min_count++; cout<<min_num<<endl; } return 0; }
