Re: [閒聊] 每日leetcode已回收
看板Marginalman作者enmeitiryous (enmeitiryous)時間1年前 (2024/07/23 09:16)推噓1(1推 0噓 1→)留言2則, 2人參與討論串546/1548 (看更多)
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.cc), 來自: 36.227.202.239 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1721697416.A.6A3.html
推
07/23 09:17,
1年前
, 1F
07/23 09:17, 1F
→
07/23 09:19,
1年前
, 2F
07/23 09:19, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 546 之 1548 篇):