mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
@ -188,7 +188,33 @@ class Solution {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
简化版代码:
|
||||||
|
```java
|
||||||
|
class Solution {
|
||||||
|
public int[] topKFrequent(int[] nums, int k) {
|
||||||
|
// 优先级队列,为了避免复杂 api 操作,pq 存储数组
|
||||||
|
// lambda 表达式设置优先级队列从大到小存储 o1 - o2 为从大到小,o2 - o1 反之
|
||||||
|
PriorityQueue<int[]> pq = new PriorityQueue<>((o1, o2) -> o1[1] - o2[1]);
|
||||||
|
int[] res = new int[k]; // 答案数组为 k 个元素
|
||||||
|
Map<Integer, Integer> map = new HashMap<>(); // 记录元素出现次数
|
||||||
|
for(int num : nums) map.put(num, map.getOrDefault(num, 0) + 1);
|
||||||
|
for(var x : map.entrySet()) { // entrySet 获取 k-v Set 集合
|
||||||
|
// 将 kv 转化成数组
|
||||||
|
int[] tmp = new int[2];
|
||||||
|
tmp[0] = x.getKey();
|
||||||
|
tmp[1] = x.getValue();
|
||||||
|
pq.offer(tmp);
|
||||||
|
if(pq.size() > k) {
|
||||||
|
pq.poll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int i = 0; i < k; i ++) {
|
||||||
|
res[i] = pq.poll()[0]; // 获取优先队列里的元素
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Python:
|
Python:
|
||||||
```python
|
```python
|
||||||
|
Reference in New Issue
Block a user