问题描述:
- 给定一个整数数组
nums
,将数组按照每个值的频率升序排序。- 如果有多个值的频率相同,按照数值本身将它们降序排序。
- 返回排序后的数组。
核心思路:
- 题目就是解题方法。
- 哈希表计数,再根据频数进行排序,即重定义排序方式即可。
代码实现:
class Solution
{
public:
vector<int> frequencySort(vector<int>& nums)
{
unordered_map<int, int> mp;
for(int& num : nums) ++mp[num];
sort(nums.begin(), nums.end(), [&](const int& a, const int& b)
{
return mp[a] == mp[b] ? a > b : mp[a] < mp[b];
});
return nums;
}
};