先看一道面试题。
某公司中有N名员工,给定所有员工工资的清单,财务人员要按照持定的顺序排列员工的工资,他按照工资的频次降序排列,即给定清单中所有频次较高的工资将在频次较低的工资之前出现,如果相同数量的员工都有相同的工资,则将按照给定清单中该工资第一次出现的顺序排列。
写一算法来帮助财务人员排列员工工资的顺序。
输入:
该函数/方法的输入包括两个参数——
num,一个整数,表示员工的人数。
salaries,一个正整数列表,表示N名员工的工资。
输出:
返回一个正整数列表, 该列表按照员工工资的频次排序。
约朿条件:
1 <= num <= 10^5
1 <= salaries[i]<=10^9
0 <= i < num
示例如下
输入:
num=19
salaries=[10000,20000,40000,30000,30000,30000,40000,20000,50000,50000,50000,50000,60000,60000,60000,70000,80000,90000,100000]
输出:
[50000,50000,50000,50000,30000,30000,30000,60000,60000,60000,20000,20000,40000,40000,10000,70000,80000,90000,100000]
代码:
#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>