Sort Array by Increasing Frequency
给一个数组, 求按照频率从低到高排序, 如果相同, 按照数字从大到小排序.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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; } } |