leetcode1636
注意map的按键和按值排序,按值排序需要转为vector
#include<iostream> #include<map> #include<vector> #include<algorithm> using namespace std; int cmp(const pair<int,int>c1,const pair<int,int>c2){ if (c1.second < c2.second)return true; if (c1.second > c2.second)return false; return c1.first > c2.first; } vector<int> frequencySort(vector<int>& nums) { map<int, int>mp; int n = nums.size(); for (int i = 0; i < n; i++) { mp[nums[i]]++; } vector<pair<int,int>>v(mp.begin(), mp.end()); vector<int>v2; sort(v.begin(),v.end(), cmp); for (int i = 0; i < v.size(); i++) { for (int j = 0; j < v[i].second; j++) { v2.push_back(v[i].first); } } return v2; } int main() { vector<int>v; int n; while (cin >> n) { v.push_back(n); } frequencySort(v); }

浙公网安备 33010602011771号