map<数据类型,数据类型> mp和unordered_map<数据类型,数据类型> ump的讲解,蓝桥杯OJ4567最大数目

张开发
2026/4/9 8:06:42 15 分钟阅读

分享文章

map<数据类型,数据类型> mp和unordered_map<数据类型,数据类型> ump的讲解,蓝桥杯OJ4567最大数目
一、共同点二、区别1.实现的逻辑【这个看看就行】2.算法比赛时候的选用三、例题题目可执行代码【①遍历map数组来找最大值②每次循环都提取出来最大值循环结束后直接输出】一、共同点map数据类型数据类型 mp和unordered_map数据类型数据类型 ump的定义方式和用法完全相同数组都是mp[key]count;ump[key]count;//key指数组下标count指该下标对应的值。相当于int a[i]7。key对应icount对应7.二、区别map数据类型数据类型 mp和unordered_map数据类型数据类型 ump的区别是1.实现的逻辑【这个看看就行】map红黑树 →有序慢unordered_map哈希表 →无序快2.算法比赛时候的选用只需要统计次数、存映射、查有没有→ 用unordered_map更快不超时需要按 key 从小到大遍历、自动排序→ 只能用map当n超过1e5的数据长度时只能用unordered_map三、例题https://www.lanqiao.cn/problems/4567/learning/?page1first_category_id1name%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AEsortproblem_idasc1https://www.lanqiao.cn/problems/4567/learning/?page1first_category_id1name%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AEsortproblem_idasc1题目可执行代码【①遍历map数组来找最大值②每次循环都提取出来最大值循环结束后直接输出】//①遍历map数组来找最大值 #include bits/stdc.h using namespace std; long long n,m; const int N1e510; long long a[N]; unordered_maplong long,long long mp; int main() { cinn; for(int i1;in;i) cina[i]; sort(a1,a1n); for(int i1;in;i){ mp[a[i]1]; mp[a[i]]; mp[a[i]-1]; } for(auto itmp.begin();it!mp.end();it){ if(it-secondm) mit-second; } coutm; return 0; } //②每次循环都提取出来最大值循环结束后直接输出 #include bits/stdc.h using namespace std; long long n,m; const int N1e510; long long a[N]; unordered_maplong long,long long mp; int main() { cinn; for(int i1;in;i) cina[i]; sort(a1,a1n); for(int i1;in;i){ mp[a[i]1]; mp[a[i]]; mp[a[i]-1]; mmax(m,mp[a[i]1]); mmax(m,mp[a[i]]); mmax(m,mp[a[i]-1]); } coutm; return 0; }

更多文章