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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| public class Solution {
public int[] topKFrequent(int[] nums, int k) { Map<Integer, Integer> frequencyMap = new HashMap<>(); for (int num : nums) { frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1); }
PriorityQueue<int[]> maxHeap = new PriorityQueue<>( (pair1, pair2) -> pair2[1] - pair1[1] ); for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()){ maxHeap.add(new int[]{entry.getKey(), entry.getValue()}); }
int[] result = new int[k]; for(int i = 0; i < k; i++){ result[i] = maxHeap.poll()[0]; } return result; } }
|