前 K 个高频元素

给定一个整数数组 nums 和一个整数 k ,请返回其中出现频率前 k 高的元素。可以按 任意顺序 返回答案。

  • 输入: nums = [1,1,1,2,2,3], k = 2
    输出: [1,2]

  • 输入: nums = [1], k = 1
    输出: [1]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var topKFrequent = function (nums, k) {
let map = new Map()
let arr = []
let res = []
nums.forEach(item => {
map.has(item) ? map.set(item, map.get(item) + 1) : map.set(item, 1)
})
// 根据value值从大到小排序
arr = Array.from(map).sort((a, b) => b[1] - a[1])
arr = arr.splice(0, k)
for (let i = 0; i < arr.length; i++) {
res.push(arr[i][0])
}
return res
};