Skip to content

Commit 8ffa938

Browse files
authored
Create TheRocket.md
1 parent 5cca5c7 commit 8ffa938

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
```

0 commit comments

Comments
 (0)