LeetCode-347. 前K个高频元素
347. 前K个高频元素
【题目】:
【代码】:桶排序
- 统计出数组中元素的频次,存入map中。
- 设置若干个桶,每个桶存储出现频率相同的数,桶的下标表示数出现的频率,即出现频次为 i 的元素存放在第 i 个桶。
- 把数都放到桶之后,从后向前遍历桶,最先得到的 k 个数就是出现频率最多的的 k 个数。
- 时间复杂度:O(n),其中 nn 表示数组的长度。
- 空间复杂度:O(n)
效果:
另外,【LeetCode题解】347_前K个高频元素(Top-K-Frequent-Elements)中详细分析了一般排序算法,最小堆,桶排序算法。
PriorityQueue解析见:Java堆结构PriorityQueue完全解析、深入理解Java PriorityQueue