1636. sort array by increasing frequency 給你一個含有重複整數的array,將裡面的數字依出現頻率由低到高排序,如果兩個數 的出現頻率相同則將兩個數由本身由大到小排序,回傳排序完的陣列。 思路:先掃過array將elements依序用unordered_map紀錄出現次數,然後塞到 一個二維array中,按照題目敘述定義新的sort function,sort完後回傳對應array 因為回傳的array本身亦須具有重複整數,所以塞二維array時要根據出現次數重複塞 static bool compareInterval( vector<int> &v1, vector<int> &v2){ if(v1[0]==v2[0]){ return(v1[1]>v2[1]); } else{ return (v1[0]<v2[0]); } } static vector<int> frequencySort(vector<int>& nums) { unordered_map<int,int> freq; vector<vector<int>> pre_ans; int n=nums.size(); for(int i=0;i<n;++i){ freq[nums[i]]++; } for(auto k:freq){ for(int j=0;j<k.second;++j){ pre_ans.push_back({k.second,k.first}); } } sort(pre_ans.begin(),pre_ans.end(),compareInterval); vector<int> ans; for(auto p:pre_ans){ ans.push_back(p[1]); } return ans; } -- ※ 發信站: 批踢踢實業坊(ptt-web.org.tw), 來自: 36.227.202.239 (臺灣) ※ 文章網址: https://ptt-web.org.tw/Marginalman/M.1721697416.A.6A3
DJYOMIYAHINA: 放過我放過我放過我放過我放過我 07/23 09:17
sustainer123: 大師 07/23 09:19