用unordered_map求元素出现次数最多的那个,为什么不能全部通过呢?

频繁元素

https://ac.nowcoder.com/acm/problem/22229

#include <unordered_map>
using namespace std;

int main(){
    int n, number;
    scanf("%d", &n);
    if (n < 1||n>20)
        return 0;
    unordered_map<int, int> ump;
    for (int i = 0; i <n; i++) {
        scanf("%d", &number);
        ump[number] ++;
    }
    int maxFreq=-1,maxNum=-100000;
    for (unordered_map<int, int>::iterator it = ump.begin(); it != ump.end(); it++) {
        if ((it->second) > maxFreq) {
            maxFreq = it->second;
            maxNum = it->first;
        }
    }
    printf("%d\n",maxNum);
    return 0;
 }

图片说明

全部评论
因为是unordered_map,所以数据的插入没有顺序,实现不了一定输出第一个最多出现的数字!比如你输入1-20,正确结果应该是1,但使用unordered_map运行结果可不一定是1
点赞 回复 分享
发布于 2021-05-14 15:52

相关推荐

11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务