Re: [閒聊] 每日leetcode

作者: enmeitiryous (enmeitiryous)   2024-07-23 09:16:54
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;
}
作者: DJYOMIYAHINA (通通打死)   2024-07-23 09:17:00
放過我放過我放過我放過我放過我
作者: sustainer123 (caster)   2024-07-23 09:19:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com