题目:

题解:
思路:排序
- 前言:对于这种利用原数组之后的数据对原数组进行排序的题做的较少,所以记录一下。
- 思路:先对数组中每个元素的频率进行统计,然后对原数组进行排序的话,要使用频率计数,按照题目要求排序即可。
代码如下:
class Solution {
public:
// 模拟:对元素的频率进行统计,然后使用频率统计并按照题目要求,来对原数组进行排序
vector<int> frequencySort(vector<int>& a) {
unordered_map<int,int> cnt;
for(int x:a)cnt[x]++;
sort(a.begin(),a.end(),[&](const int& x,const int &y){
// 频率不同,按频率升序排序
if(cnt[x]!=cnt[y])return cnt[x]<cnt[y];
// 频率相同,按值降序排序
else return x>y;
});
return a;
}
};