用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-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务