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