//CCF认证201312-1
//求出现次数最多的数
//思路:
/*1 从屏幕得到输入
2 统计每个数字出现的次数,
3 找出出现次数最多的数
*/
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n;
cin >>n;
vector<int> vec;
for (int i = 0; i < n; i++) {
int t;
cin >> t;
vec.push_back(t);
}
sort(vec.begin(), vec.end());
//for (int i = 0; i < n; i++)
// cout << vec[i] << endl;
int min = vec[0];//记录结果
int count = 1;//记录最大出现次数
int num = 1;//记录每个数的出现次数
vec.push_back(-1);//这里加上-1是为了判断最后一个数的出现次数是否比count大
for (int i = 1; i < n + 1; i++) {
if (vec[i - 1] == vec[i]) {
//cout << vec[i - 1] << ":" << num << endl;
num++;
//当前的数和之前的一样,计数器加一
}
else {
//不一样,那么说明当前数字是一个新的数
//对vec[i-1]的出现次数处理
if (num > count) {//不必判断=,因为vector已经排好序
min = vec[i - 1];
count = num;
}
num = 1;//注意不要写到上面的if里,写里面是错的,因为num<count的时候不执行
//num=1是为新的数计数用的,无论之前的数是否为结果,计数器都要恢复1
}
}
cout << min << endl;
system("pause");
return 0;
}
感觉这篇更好一点,用的是map,比我的简单,我这个num没写好就是错的,这个没有这样的问题,推荐:
https://blog.csdn.net/aroundtheworld/article/details/82144577