1636 按照頻率將陣列升序排序
題目描述:
給你一個整數陣列 nums ,請你將陣列按照每個值的頻率 升序 排序。如果有多個值的頻率相同,請你按照數值本身將它們 降序 排序。
請你返回排序後的陣列。
示例 1:
輸入:nums = [1,1,2,2,2,3]
輸出:[3,1,1,2,2,2]
解釋:‘3’ 頻率為 1,‘1’ 頻率為 2,‘2’ 頻率為 3 。
示例 2:
輸入:nums = [2,3,1,3,2]
輸出:[1,3,3,2,2]
解釋:‘2’ 和 ‘3’ 頻率都為 2 ,所以它們之間按照數值本身降序排序。
示例 3:
輸入:nums = [-1,1,-6,4,5,-6,1,4,1]
輸出:[5,-1,4,4,-6,-6,1,1,1]
提示:
1 <= nums.length <= 100
-100 <= nums[i] <= 100
方法1:
主要思路:
(1)先將陣列中的元素進行統計,找出各個元素的頻率;
(2)在根據頻率和數字的大小,將統計的元素進行排序;
(3)使用排序後的陣列,生成需要的順序的陣列;
class Solution {
public:
vector<int> frequencySort(vector<int>& nums) {
//統計各個元素的頻率
unordered_map<int,int> mp;
for(int& n:nums){
++mp[n];
}
//將頻率和陣列元素組成的陣列進行排序
vector<pair<int,int>> sort_num(mp.begin(),mp.end());
sort(sort_num.begin(),sort_num.end(),[](auto& lhs,auto& rhs){
return lhs.second==rhs.second?lhs.first>rhs.first:lhs.second<rhs.second;
});
//根據排好序的陣列生成需要的陣列
int pos=0;
vector<int> res(nums.size(),0);
for(auto&it:sort_num){
for(int i=0;i<it.second;++i){
res[pos++]=it.first;
}
}
return res;
}
};
方法2:
主要思路:
(1)也是先統計元素的頻率,只不過隨後直接使用統計的資訊對陣列進行排序;
(2)程式碼更加簡潔,但是時間明顯慢了很多,可能是排序的陣列的長度變長了很多的原因;
class Solution {
public:
vector<int> frequencySort(vector<int>& nums) {
unordered_map<int,int> mp;
for(int& n:nums){
++mp[n];
}
vector<int> res=nums;
//直接根據統計的資訊進行排序
sort(res.begin(),res.end(),[&mp](int lhs,int rhs){
return mp[lhs]==mp[rhs]?lhs>rhs:mp[lhs]<mp[rhs];
});
return res;
}
};
相關文章
- LeetCode_1636_按照頻率將陣列升序排序LeetCode陣列排序
- Js陣列物件的屬性值升序排序,並指定陣列中的某個物件移動到陣列的最前面JS陣列物件排序
- 使用sort方法實現陣列升序降序陣列
- 陣列排序陣列排序
- 陣列的排序陣列排序
- 物件陣列排序物件陣列排序
- js陣列排序JS陣列排序
- JavaScript 陣列排序JavaScript陣列排序
- 為什麼處理排序陣列比未排序陣列快排序陣列
- [Python手撕]兩個升序陣列的中位數Python陣列
- 陣列氣泡排序陣列排序
- 陣列選擇排序陣列排序
- 二維陣列排序陣列排序
- c# 陣列排序C#陣列排序
- js陣列排序整理JS陣列排序
- 多維陣列排序陣列排序
- 陣列二:使用陣列可變函式為陣列排序陣列函式排序
- Trie樹:字串頻率統計排序字串排序
- go最大堆 實現頻率排序Go排序
- c語言:輸入任意10個正整數,按照升序排序輸出:(冒泡演算法)C語言排序演算法
- 記一次陣列操作:陣列 A 根據陣列 B 排序陣列排序
- 陣列排序函式-php陣列函式(一)陣列排序函式PHP
- js將陣列中的字串執行字母表排序JS陣列字串排序
- 按照價格排序!排序
- 陣列排序的實現陣列排序
- php 二維陣列排序PHP陣列排序
- PHP 多維陣列排序PHP陣列排序
- 二位陣列排序陣列排序
- c++陣列排序插入C++陣列排序
- 1117陣列排序的技巧陣列排序
- 二維陣列行排序陣列排序
- js:陣列自定義排序JS陣列排序
- 陣列先去重,後排序陣列排序
- Laravel 佇列執行頻率限制Laravel佇列
- PHP 陣列排序(複雜字串)PHP陣列排序字串
- js陣列排序和打亂JS陣列排序
- Javascript中的陣列物件排序JavaScript陣列物件排序
- js 陣列返回,資料排序JS陣列排序