less than 1 minute read

<-E 1636> Sort Array by Increasing Frequency

class Solution {
public:
    vector<int> frequencySort(vector<int>& nums) {
        unordered_map <int, int> ma;
        for (int i = 0 ; i < nums.size(); i++) {
            ma[nums[i]]++;
        }
        vector <pair <int, int> > pa;
        for (auto it : ma) { 
            pa.push_back({it.second, it.first});
        }
        sort(pa.begin(), pa.end(), [](auto a, auto b) {
            if (a.first == b.first) {
                return a.second > b.second;
            }
            return a.first < b.first;
        });
        vector <int> ans;
        for (int i = 0; i < pa.size(); i++) {
            for (int j = 0; j < pa[i].first; j++)
                ans.push_back(pa[i].second);
        }
        return ans;
    }
};