347. 前 K 个高频元素 - 力扣(LeetCode) (leetcode-cn.com)
一;使用对象进行解题,对象的属性为给定数组的元素,属性值为给定数组元素出现的次数;
二;把对象转成数组,为之后根据对象属性值进行排序做准备;
三;代码:
var topKFrequent = function (nums, k) {
let obj = {};
// 给对象填加属性
// key:数组元素;value:数组出现的次数
nums.forEach((item) =>{
if(obj[item]) {
obj[item]++;
}else {
obj[item] = 1;
}
})
// 把对象转换成数组,为后面根据对象属性值大小进行排序做准备
let arr = [];
for(let key in obj) {
arr.push({
key,
value:obj[key]
})
}
// 根据对象属性值从大到小排序
arr.sort((a,b)=>{
return b.value-a.value;
})
// 返回前 K 个频率的元素
return arr.splice(0,k).map(item=>item.key);
};