每天学习一点算法 2026/03/22
题目:前 K 个高频元素
给你一个整数数组
nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按 任意顺序 返回答案。
要统计出现频率前 k 高的元素,首先肯定要统计所有元素出现的次数,这个我们可以用 map 统计。
然后我们就可以得到一个 元素和出现频率 组成的新数组,这样我们就可以排序取出前 k 的元素了。
typescript
function topKFrequent(nums: number[], k: number): number[] {
if (k === nums.length) return nums
const map = new Map()
const res = []
for (let num of nums) {
if (map.has(num)) {
map.set(num, map.get(num) + 1)
} else {
map.set(num, 1)
}
}
map.forEach((value, key) => {
res.push([key, value])
})
return res.sort((a, b) => b[1] - a[1]).map(item => item[0]).slice(0, k)
};
题目来源:力扣(LeetCode)