Sort Array by Increasing Frequency
给一个数组, 求按照频率从低到高排序, 如果相同, 按照数字从大到小排序.
class Solution {
public int[] frequencySort(int[] nums) {
int[] f = new int[201];
for(int n : nums){
f[n+100]++;
}
List<int[]> list = new ArrayList<>();
for(int i = 0; i < 201; i++) {
if(f[i] != 0)
list.add(new int[]{i - 100, f[i]});
}
Collections.sort(list, (a,b) -> (a[1] == b[1] ? b[0] - a[0] : a[1] - b[1]));
int[] res = new int[nums.length];
int k = 0;
for(int[] l : list) {
for(int i = 0; i < l[1]; i++) {
res[k++] = l[0];
}
}
return res;
}
}