#include <iostream>
#include <vector>
#include <map>
using namespace std;
// 去重排序
vector<int> my_sort(vector<int> &nums){
int n = nums.size();
map<int,int> mp;
for (int i = 0; i < n; ++i) {
if (mp.find(nums[i]) == mp.end()){
mp[nums[i]] = 1;
} else{
mp[nums[i]]++;
}
}
vector<vector<int>> tem(n+1,vector<int>());
map<int,bool> tmp;
for (auto x:nums) {
if (tmp.find(x) == tmp.end() || !tmp[x]){
tem[mp[x]].push_back(x);
tmp[x] = true;
}
}
vector<int> res;
for (int i = tem.size()-1;i >= 0;--i){
if (tem[i].size()>0){
for (int x:tem[i]) {
res.push_back(x);
}
}
}
return res;
}
int main(){
vector<int> nums = {1,3,3,3,2,2,2,4,4,4,5};
vector<int> res= my_sort(nums);
for (int r:res) {
cout<<r;
}
return 0;
}
数组去重按次数排序(次数相同时按时间排序)
最新推荐文章于 2024-09-08 15:12:17 发布