347. 前K个高频元素
分析
- 统计频率:
- 使用哈希表
hash
记录数组中每个元素的出现次数,键为数组元素,值为对应频率
- 使用哈希表
- 统计频率分布:
- 创建一个计数数组
count
,其中count[i]
表示频率为i
的元素个数
- 创建一个计数数组
- 确定频率阈值:
- 从高频到低频累加
count
,直到累计的元素数达到k
,此时的频率即为筛选阈值i
- 从高频到低频累加
- 筛选元素:
- 再次遍历哈希表
hash
,将频率大于阈值i
的元素加入结果数组res
- 再次遍历哈希表
时间复杂度
- 统计频率:
O(n)
,遍历数组 - 统计频率分布:
O(m)
,m
为哈希表的大小 - 筛选元素:
O(m)
总复杂度:O(n + m)
,其中 m <= n
空间复杂度
- 哈希表存储频率:
O(m)
- 频率分布数组:
O(n)
总复杂度:O(n + m)
C++代码
|
|