题目描述
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]
示例 2:
输入: nums = [1], k = 1
输出: [1]
提示:
1 <= nums.length <= 105k的取值范围是[1, 数组中不相同的元素的个数]- 题目数据保证答案唯一,换句话说,数组中前
k个高频元素的集合是唯一的
题解
- 使用
map维护数组中元素的值以及出现的次数 - 使用数组进行解构排序
代码实现
var topKFrequent = function(nums, k) {
let map = new Map(), arr = [...new Set(nums)]
nums.map((num)=>{
if(map.has(num)) map.set(num, map.get(num)+1)
else map.set(num , 1)
})
return arr.sort((a,b)=> map.get(b) - map.get(a)).slice(0,k)
};
至此我们就完成了leetcode-347-前K个高频元素