蓝桥杯 出现次数最多的整数 map

问题描述
  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
  输入格式:第一行是一个整数NN<= 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
  输出格式:输出只有一行,即出现次数最多的那个元素值。

样例输入
5
100
150
150
200
250
样例输出
150
解题思路:用map存储,重点复习c++的基础数据结构的操作
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 map<int, int> mp; //first数字,second为数字出现的次数 
 4 int main(){
 5     int n;
 6     cin >> n;
 7     if (n <= 0) { //坑点,测试样例有n=0和n=-1的情况,n<=0时,应该什么也不输出直接return 0 
 8         return 0;
 9     }
10     for (int i = 0; i < n; i++) {
11         int t; 
12         cin >> t;
13         mp[t]++; //这个数出现的次数加一 
14     }
15     map<int, int>::iterator it = mp.begin();
16     int maxx = it -> first; //先默认第一个数出现的次数最大,然后擂台赛不断比较求最大值 
17     //int sum = 0; 
18     for (it = mp.begin(); it != mp.end(); it++) {
19         //sum++;
20         if (it -> second > mp[maxx]) { //如果遍历到的数的出现次数大于当前选定的数maxx的出现次数 
21             maxx = it -> first; //将maxx更新为这个数 
22         }
23     }
24     //cout << sum << endl;
25     cout << maxx << endl; 
26     return 0;
27 }
 
原文地址:https://www.cnblogs.com/fx1998/p/12598952.html