LeetCode-347. 前K个高频元素

347. 前K个高频元素

【题目】:

LeetCode-347. 前K个高频元素_第1张图片

【代码】:桶排序

  1. 统计出数组中元素的频次,存入map中。
  2. 设置若干个桶,每个桶存储出现频率相同的数,桶的下标表示数出现的频率,即出现频次为 i 的元素存放在第 i 个桶。
  3. 把数都放到桶之后,从后向前遍历桶,最先得到的 k 个数就是出现频率最多的的 k 个数。

LeetCode-347. 前K个高频元素_第2张图片

  • 时间复杂度:O(n),其中 nn 表示数组的长度。
  • 空间复杂度:O(n)

效果:

LeetCode-347. 前K个高频元素_第3张图片

另外,【LeetCode题解】347_前K个高频元素(Top-K-Frequent-Elements)中详细分析了一般排序算法,最小堆,桶排序算法。

PriorityQueue解析见:Java堆结构PriorityQueue完全解析、深入理解Java PriorityQueue

 

你可能感兴趣的:(2.,算法)