深圳自建网站,wordpress数据库字段,新手怎么入行seo,怎么建设vip电影网站文章目录1. 题目2. 解题1. 题目
给你一个整数数组 nums #xff0c;请你将数组按照每个值的频率 升序 排序。 如果有多个值的频率相同#xff0c;请你按照数值本身将它们 降序 排序。
请你返回排序后的数组。
示例 1#xff1a;
输入#xff1a;nums [1,1,2,2,2,3]
输出…
文章目录1. 题目2. 解题1. 题目
给你一个整数数组 nums 请你将数组按照每个值的频率 升序 排序。 如果有多个值的频率相同请你按照数值本身将它们 降序 排序。
请你返回排序后的数组。
示例 1
输入nums [1,1,2,2,2,3]
输出[3,1,1,2,2,2]
解释3 频率为 11 频率为 22 频率为 3 。示例 2
输入nums [2,3,1,3,2]
输出[1,3,3,2,2]
解释2 和 3 频率都为 2 所以它们之间按照数值本身降序排序。示例 3
输入nums [-1,1,-6,4,5,-6,1,4,1]
输出[5,-1,4,4,-6,-6,1,1,1]提示
1 nums.length 100
-100 nums[i] 100来源力扣LeetCode 链接https://leetcode-cn.com/problems/sort-array-by-increasing-frequency 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
哈希计数频率自定义排序
class Solution {
public:vectorint frequencySort(vectorint nums) {unordered_mapint, int m;//哈希计数for(auto n : nums)m[n];vectorpairint,int arr;for(auto p : m){arr.push_back(p);}sort(arr.begin(), arr.end(),[](auto a, auto b) {if(a.second b.second)return a.first b.first;return a.second b.second;});vectorint ans(nums.size());int i 0, t, number;for(auto p : arr){t p.second;number p.first;while(t--)ans[i] number;}return ans;}
};或者简洁写法
class Solution {
public:vectorint frequencySort(vectorint nums) {unordered_mapint, int m;for(auto n : nums)m[n];sort(nums.begin(), nums.end(),[](auto a, auto b) {if(m[a] m[b])return a b;return m[a] m[b];});return nums;}
};16 ms 11.6 MB 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步