-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSortFrequency.java
More file actions
39 lines (30 loc) · 1.1 KB
/
Copy pathSortFrequency.java
File metadata and controls
39 lines (30 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package LeetcodePractice;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class SortFrequency {
public static int[] frequencySort(int[] nums) {
Map<Integer, Integer> freqMap = new HashMap<>();
for (int n : nums) {
freqMap.put(n, freqMap.getOrDefault(n, 0) + 1);
}
Integer[] arr = Arrays.stream(nums).boxed().toArray(Integer[]::new);
Arrays.sort(arr, (a, b) -> {
int freqA = freqMap.get(a);
int freqB = freqMap.get(b);
if (freqA == freqB) {
return b - a;
}
return freqA - freqB;
});
return Arrays.stream(arr).mapToInt(i -> i).toArray();
}
public static void main(String[] args) {
int[] nums1 = {1, 1, 2, 2, 2, 3};
System.out.println(Arrays.toString(frequencySort(nums1)));
int[] nums2 = {2, 3, 1, 3, 2};
System.out.println(Arrays.toString(frequencySort(nums2)));
int[] nums3 = {-1, 1, -6, 4, 5, -6, 1, 4, 1};
System.out.println(Arrays.toString(frequencySort(nums3)));
}
}