哈希表:频次统计(TopK 与众数)
一、面试常考点
1. 频次统计模板
先计数,再按题意排序/堆选/桶分组。
2. 性能关注点
大数据场景避免全量排序,优先最小堆或桶。
二、细节介绍
1. 计数
map.set(x, (map.get(x)||0)+1)。
2. TopK
计数后可用最小堆维持 K 个高频元素。
三、示例代码(简化版)
function topKFrequent(nums, k) {
const cnt = new Map()
for (const x of nums) cnt.set(x, (cnt.get(x) || 0) + 1)
return [...cnt.entries()]
.sort((a, b) => b[1] - a[1])
.slice(0, k)
.map((it) => it[0])
}
四、常用应用场景
1. 日志热点统计
Top IP、Top 接口。
2. 推荐召回特征
高频行为/标签统计。