考点:统计众数
思路:
-
用哈希表统计每个数字出现的次数。
-
用 t 表示数字,res 表示 t 出现的次数。初始状态:t = -1, res = 0;
-
遍历哈希表,如果遍历到的数字出现的次数大于 res,或者遍历到数字小于 t 且出现次数等于 res,更新 t 和 res 为当前组合。
-
输出 res 即为答案。
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<int,int> h;//哈希表
int n;
cin >> n;
while(n--)
{
int x;
cin >> x;
h[x]++;//x 出现次数 + 1
}
int t = -1, res = 0;//t 为数字,res 为出现次数
for(auto it = h.begin(); it != h.end(); it++)//遍历哈希表
{
if((it->second > res) || (it->second == res && it->first < t))//遍历到的数字出现的次数大于 res,或者遍历到数字小于 t 且出现次数等于 res,更新 t 和 res 为当前组合。
{
t = it->first;
res = it->second;
}
}
cout << t;
}
有问题直接评论即可。
求点赞。
ccf官网提交时选择cpp14就可以了,是因为使用了auto的原因
代码是不是太长了,能不能一趟遍历
AcWing能过CCF官网编译出错,我也是这样,感觉可能是
unordered_map
出了问题……有些地方不支持unordered_map