对于给定数组按照频次降序排列,并保持排序的稳定性。
思路:用一个vector记录出现的频次,一个vector记录该数字,遍历时使用map
记录是否出现过并记录保存频次的位置。
代码如下:
#include<iostream>
#include<vector>
#include<map>
using namespace std;
vector<int > salaryfrequeny(int num, int * salaries)
{
vector<int > result;
if (num <= 0)
return result;
vector<int > times;
vector<int > name;
map<int, int> m;
int index = 0;
for (int i = 0; i < num; i++)
{
int value = salaries[i];
if (m.count(value) == 0)
{
m[value] = index++;
times.push_back(1);
name.push_back(value);
}
else
{
times[m[value]] += 1;
}
}
int len = name