Given an integer array nums and an integer k, return the k most frequent elements.
You may return the answer in any order.
Example 1:
Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]
Example 2:
Input: nums = [1], k = 1
Output: [1]
Example 3:
Input: arr[] = {3, 1, 4, 4, 5, 2, 6, 1}, k = 2
Output: [4,1]
这是一道典型的关于数组和哈希表的题目,适合作为数据结构和算法训练的中等难度题目。它考查了候选者处理和分析数组数据的能力,以及对哈希表和堆(或优先队列)的应用能力。此题具有一定的实际应用背景,比如在数据分析、数据库查询优化等领域中找到最常见的几个项目或元素。
简单思路
- 建立频率表:
- 遍历数组,使用哈希表来统计每个数字出现的次数。
- 提取k个高频元素:
- 方法一(排序法):将哈希表的键值对按值(即频率)进行降序排序,然后取出前k个元素。
- 方法二(最小堆法):使用大小为k的最小堆存储最频繁的k个元素。遍历频率表,对于每个元素,如果堆未满,直接添加;如果堆已满,只有当当前元素的频率大于堆顶元素的频率时,才将堆顶元素替换为当前元素,并重新调整堆。
经过我们的面试辅助,候选人顺利的拿到了offer。快速拿offer联系我。
联系我,查看题目全文。OA代做,面试代面,面试辅助。联系我 我们公开透明报价,做华人社区面试suport第一品牌。