leetcode 1636. 按照频率将数组升序排序-耗时100-Sort Array by Increasing Frequency
Problem: 1636. 按照频率将数组升序排序- Sort Array by Increasing Frequency
耗时100%,哈希表统计频次,然后频次和数字放入数组,按照题意的规则排序,最后得到最终的数组
Code
class Solution { public: int ump[201]; vector<int> frequencySort(vector<int>& nums) { memset(ump, 0, sizeof(ump)); for(int& i : nums) ump[i+100]++; vector<pair<int, int>> tr; int cnt, a; for(int i = 0; i < 201; i++) { a = ump[i]; if(a > 0) tr.push_back({a, i-100}); } function<bool(pair<int, int>&, pair<int, int>&)> func = [&](pair<int, int>& a, pair<int, int>& c) -> bool { if(a.first == c.first) return a.second > c.second; else return a.first < c.first; }; sort(tr.begin(), tr.end(), func); vector<int> ret; for(pair<int, int>& p : tr) { cnt = p.first; a = p.second; for(int i = 0; i < cnt; i++) ret.push_back(a); } return ret; } };