前 K 个高频元素
题解思路
本题要求在一个整数数组中找出出现频率最高的前 k 个元素,且数据量较大(最多 105),因此我们必须使用 高效的算法。
方法:哈希表 + 最小堆(TopK 问题经典解法)
- 统计频率:
使用 哈希表(HashMap) 统计每个元素的出现次数,时间复杂度为 O(n)。
Leetcode 75.前K个高频元素-原题链接
题目内容
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按任意顺序返回答案。
输入描述
- 第一行输入两个整数 n 和 k,其中 n 是数组 nums 的长度。
- 第二行输入 n 个整数,表示数组 nums。
输出描述
输出 k 个整数,表示前 k 个出现频率最高的元素,顺序不限。
样例1
输入
6 2
1 1 1 2 2 3
输出
1 2
样例2
输入
1 1
1
输出
1
提示
- 1<=nums.length<=105
- k 的取值范围是 [1, 数组中不相同的元素的个数]
- 题目数据保证答案唯一,换句话说,数组中前 k个高频元素的集合是唯一的