#include <iostream>
#include <cstdio>
#include <cstring>
#include <unordered_map>
#include <limits.h>
using namespace std;
const int N = 1010;
int nums[N];
unordered_map<int, int> hashm;
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++){
cin >> nums[i];
hashm[nums[i]]++;
}
int mint = INT_MIN;
int minn = INT_MAX;
for(auto &[x,y] : hashm){
if(y > mint || (y == mint && x < minn)){
mint = y;
minn = x;
}
}
printf("%d\n", minn);
return 0;
}
不用map
#include <iostream>
#include <cstdio>
#include <cstring>
#include <unordered_map>
#include <limits.h>
using namespace std;
const int N = 1010;
const int S = 10010;
int nums[N];
int count[S];
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++){
cin >> nums[i];
count[nums[i]]++;
}
int mint = INT_MIN;
int minn = INT_MAX;
for(int i = 0; i < n; i++){
if(count[nums[i]] > mint || (count[nums[i]] == mint && nums[i] < minn)){
mint = count[nums[i]];
minn = nums[i];
}
}
printf("%d\n", minn);
return 0;
}
大佬好,请问那个 for(auto &[x,y] : hashm) 这句话什么意思,我刚学不太懂,我感觉你的方法很不错欸
哈哈哈我也是刚开始练的小白。auto是根据后面的值自己推测前面的类型是什么,后面就是遍历map,取每一对(x,y),是hashm[x] = y这样的关系。
我还没学map容器哈哈,还没能看懂你的做法👀
噢噢 map很有用,也不难,可以写题的时候查一下 https://blog.csdn.net/sevenjoin/article/details/81943864 这个介绍了一些基础的用法。
太感谢辽
我刚刚更新了一个不用map直接用数组的,可以参考看看~
哈哈真好,我目前练stl都还没学,而且Y总语法课也有点超纲,之前字符串也有类似这道题的方法,我当时不知道这就是哈希表法