算法
Most Common Elements
从数组中找出出现频率最高的 k 个数字,返回这 k 个数字即可,顺序不要求。
简单排序
时间复杂度:
思路
- 使用 Map 或 Record 统计每个数字出现的次数。
- 将 Map 或 Record 转换成数组并按照出现次数从大到小排序。
- 取前 k 个键即可。
代码
function topKFrequent(numbers: number[], k: number): number[] {
const freq = new Map<number, number>();
// 统计频率
for (const n of numbers) {
freq.set(n, (freq.get(n) || 0) + 1);
}
// 转化为数组 [num, count]
const arr = [...freq.entries()];
// 按照出现次数从大到小排序
arr.sort((a, b) => b[1] - a[1]);
// 取前 k 个
return arr.slice(0, k).map(([num]) => num);
}桶排序
时间复杂度:
思路
在 GitHub 上编辑
上次更新于