File tree Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ class Solution {
3+ public List<Integer > topKFrequent (int [] nums , int k ) {
4+ // 构造一个从整数到出现次数的映射
5+ Map<Integer , Integer > map = new HashMap<> ();
6+ for (int num : nums) {
7+ map. put(num, map. getOrDefault(num, 0 ) + 1 );
8+ }
9+ // 构造一个桶,桶内存放数据,桶的下标表示该数的出现次数
10+ List<Integer > [] buckets = new ArrayList [nums. length + 1 ];
11+ for (Map . Entry<Integer , Integer > entry : map. entrySet()) {
12+ int num = entry. getKey();
13+ int count = entry. getValue();
14+ if (buckets[count] == null ) {
15+ buckets[count] = new ArrayList<> ();
16+ }
17+ buckets[count]. add(num);
18+ }
19+ List<Integer > topK = new ArrayList<> (k);
20+ // 从后往前遍历桶,即从出现次数高的到出现次数低的,注意跳过不存在的桶
21+ for (int i = buckets. length - 1 ; i >= 0 && topK. size() < k; -- i) {
22+ if (buckets[i] != null ) {
23+ topK. addAll(buckets[i]);
24+ }
25+ }
26+ return topK;
27+ }
28+ }
29+ ```
You can’t perform that action at this time.
0 commit comments