【发布时间】:2020-12-08 11:52:30
【问题描述】:
我正在尝试按频率递增的顺序对整数向量进行排序。我已经声明了一个存储整数计数的全局映射,并在自定义比较器中使用了它,但是我得到了错误的答案。在线检查时(here),我发现使用对的实现似乎工作正常。我做错了什么?
#include <bits/stdc++.h>
using namespace std;
unordered_map<int,int> m;
bool cm(int a,int b){
if(m[a]<m[b])
return true;
return false;
}
int main(){
int n;
cin>>n;
vector<int> v(n);
for(int i=0;i<n;i++){
cin>>v[i];
m[v[i]]++;
}
sort(v.begin(),v.end(),cm);
}
【问题讨论】:
-
您的代码无法编译。请拼凑一个minimal reproducible example。
-
对于我提供的示例输入,此代码对我有用。哪个测试用例失败了?
-
请也发布您的结果,您提供的测试用例对我来说很好。
-
onlinegdb.com/BkrS_v9fw 也为该测试用例工作。有可能,当两个数字的频率匹配时如何处理?
-
8 2 4 1 5 3 5 1 3 对于这个测试用例,我得到以下输出:2 4 1 5 3 5 1 3