347.TopK Frequent Elements

Given a non-empty array of integers, return the k most frequent elements.

Example 1:

Input: nums = [1,1,1,2,2,3], k = 2 Output: [1,2]

Example 2:

Input: nums = [1], k = 1 Output: [1]

 

public List<Integer> topKFrequent(int[] nums, int k) {
Map<Integer, Integer> map = new HashMap<>();
for (int n : nums) {
map.put(n, map.getOrDefault(n, 0) + 1);
}
PriorityQueue<Map.Entry<Integer, Integer>> minHeap = new PriorityQueue<>((o1, o2) -> o1.getValue().compareTo(o2.getValue()));
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (minHeap.size() != k) {
minHeap.offer(entry);
} else {
if (minHeap.peek().getValue() < entry.getValue()){
minHeap.poll();
minHeap.offer(entry);
}
}
}
List<Integer> res = new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : minHeap) {
res.add(entry.getKey());
}
return res;
}
posted @   MarkLeeBYR  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示