思路
本题和上一题极其类似。我们只需要先用哈希统计元素出现频次。然后对(频次,值)二元组用固定大小为k的小根堆维护,最后输出小根堆的前k小的值即可

#code-switcher
给定一个整数数组 nums 和一个整数 k。对于 nums 中出现的每个不同整数,统计它在数组中的出现次数,该次数即为这个整数的频率。请找出其中频率最高的 k 个整数,并将它们作为答案返回。返回结果中整数的顺序没有要求。
约束条件:
nums 的长度不少于 1,且不超过 10^5。k 的取值范围为 1 到 nums 中不同整数的个数。k 个高频整数组成的集合是唯一的。输入包含两个参数:一个整数数组 nums 和一个整数 k。nums 是需要统计频率的数组;k 表示需要返回的高频整数个数。
返回一个整数列表,其中包含频率最高的 k 个整数。列表中元素的顺序不限。
输入
10 2
1 1 1 1 2 2 2 3 3 4
输出
2 1
说明
统计各整数频率:1 出现 4 次,2 出现 3 次,3 出现 2 次,4 出现 1 次。
频率最高的 2 个整数是 1 和 2,所以返回它们。输出顺序不限,2 1 是其中一种合法顺序。
输入
5 1
3 1 2 1 1
输出
1
说明
统计各整数频率:1 出现 3 次,2 出现 1 次,3 出现 1 次。
因为 k=1,只需要返回频率最高的 1 个整数,也就是 1。
输入
7 3
5 5 5 5 2 2 3
输出
3 5 2
说明
统计各整数频率:5 出现 4 次,2 出现 2 次,3 出现 1 次。
因为 k=3,数组中只有 3 个不同整数,所以需要返回全部不同整数。输出顺序不限,3 5 2 是其中一种合法顺序。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册