描述

前k个高频元素347

分析

实现

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
import java.util.Map;
import java.util.HashMap;
import java.util.PriorityQueue;

//347. 前 K 个高频元素
public class TopKFrequentElements347 {
public static void main(String[] args) {
int[] arr = {1,1,1,2,3,3};
for (int item : new Solution().topKFrequent(arr,2)) {
System.out.print(item + "\t");
}
}
}

class Solution {
public int[] topKFrequent(int[] nums, int k) {
//统计频率
Map<Integer,Integer> map = new HashMap<>();
for (int item : nums) {
map.put(item,map.getOrDefault(item,0) + 1);
}
//排序
PriorityQueue<int[]> pq = new PriorityQueue<>((pair1,pair2) -> pair2[1] - pair1[1]);
for (Map.Entry<Integer,Integer> entry : map.entrySet()) {
pq.add(new int[]{entry.getKey(),entry.getValue()});
}
//输出k
int[] res = new int[k];
for (int i = 0; i < k ; i++) {
res[i] = pq.poll()[0];
}
return res;
}
}

总结

主要是集合那些方法不太熟悉了