中等算法给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]
示例 2:
输入: nums = [1], k = 1
输出: [1]
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvzpxi/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
代码
/**
* @param {number[]} nums
* @param {number} k
* @return {number[]}
*/
var topKFrequent = function (nums, k) {
const map = new Map();
for (let i = 0; i < nums.length; i++) {
if (!map.get(nums[i])) {
map.set(nums[i], 1);
continue;
}
map.set(nums[i], map.get(nums[i]) + 1);
}
const ans = [...map.keys()]
.sort((prev, curt) => {
return map.get(curt) - map.get(prev);
})
.slice(0, k);
return ans;
};