【重点】【堆】347.前K个高频元素

题目

最大的K个元素 => 小根堆(类似上窄下宽的梯形)

最小的K个元素 => 大根堆(类似倒三角形)

法1:小根堆

java 复制代码
class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        Map<Integer, Integer> valToCountMap = new HashMap<>();
        for (int i : nums) {
            valToCountMap.put(i, valToCountMap.getOrDefault(i, 0) + 1);
        }
        PriorityQueue<int[]> queue = new PriorityQueue<>((a, b) -> a[1] - b[1]);
        for (Map.Entry<Integer, Integer> entry : valToCountMap.entrySet()) {
            int val = entry.getKey(), count = entry.getValue();
            if (queue.size() == k) {
                if (count > queue.peek()[1]) {
                    queue.poll();
                    queue.offer(new int[]{val, count});
                }
            } else {
                queue.offer(new int[]{val, count});
            }
        }

        int[] res = new int[k];
        for (int i = 0; i < k; ++i) {
            res[i] = queue.poll()[0];
        }

        return res;
    }
}
相关推荐
sogw-三叶草️7 天前
HITCON CTF 2014 — stkof · Unsafe Unlink
网络·安全·web安全·pwn·堆·二进制安全·堆漏洞
sogw-三叶草️7 天前
House of Orange
网络安全·pwn·堆·二进制安全
-dzk-9 天前
【堆】LC 347.前 K 个高频元素
算法·堆
sogw-三叶草️14 天前
House Of Einherjar
pwn·堆·二进制安全
桃蹊、1 个月前
FreeRTOS(二)之堆和栈:内存基础入门
freertos·内存管理·栈·堆
bnmoel2 个月前
数据结构深度剖析二叉树・下篇:链式结构的实现 ,遍历方法全解析
c语言·数据结构·算法·二叉树·堆
无忧.芙桃2 个月前
数据结构之堆
c语言·数据结构·c++·算法·堆
WL学习笔记3 个月前
堆(数据结构)
数据结构·堆
啦啦啦啦啦zzzz4 个月前
数据结构:堆排序
数据结构·c++·堆
8Qi84 个月前
LeetCode 295:数据流的中位数(Median Finder)—— Java 题解 ✅
java·算法·leetcode·优先队列·堆·中位数