题目:出现次数最多的数
本题属于签到题,签完到就走嘻嘻
试题编号: | 201312-1 |
试题名称: | 出现次数最多的数 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: |
问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输出格式 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。 样例输入 6 样例输出 10 |
对于已经很久没刷题的我,竟然有一丝一脸闷逼的感觉,于是……
思路:
1,最差的方法:直接设立一个大小为1000的数组,然后后面每输入一个数,就加入到相应的数组中去,虽然这个方法实在是没有什么难度,可签到需要什么难度吗?我只是签个到而已
2,看到稍微有点意思的方法:c++中STL中有一个函数,叫 map (名为映射函数),有了这个函数,就可以建立一种映射,具体啥的就不说了,待会直接看代码吧。 需要注意的是:map函数包含在头文件<map>中, 还有map中的数是按从小到大排列的
代码:
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n;
cin>>n;
map<int,int> m;
int temp;
for(int i=0;i<n;i++)
{
cin>>temp;
m[temp]++;
}
int output_object,counter=0;
for(map<int,int>::iterator it=m.begin();it!=m.end();it++) //这里的map<int,int>::iterator就是类似于int的一种类型
{
if(it->second>counter)
{
counter=it->second;
output_object=it->first;
}
}
cout<<output_object;
}