/**
* 自己的代码,用了比较复杂的数据结构:优先队列保存Map.Entry<Integer, Integer>
* Runtime: 9 ms, faster than 87.62%
* Memory Usage: 41.7 MB, less than 54.73%
*/
class Solution {
public int[] topKFrequent(int[] nums, int k) {
int[] res = new int[k];
PriorityQueue<Map.Entry<Integer, Integer>> q = new PriorityQueue<>((a, b) -> {
return b.getValue() - a.getValue();
});
HashMap<Integer, Integer> map = new HashMap<>();
for (int i : nums) {
map.put(i, map.getOrDefault(i, 0) + 1);
}
for (Map.Entry entry : map.entrySet()) {
q.offer(entry);
}
for (int i = 0; i < res.length; i++) {
res[i] = q.poll().getKey();
}
return res;
}
}
347. Top K Frequent Elements [Medium]
最新推荐文章于 2024-06-12 10:00:23 发布