【每日一题】LeetCode 347. 前 K 个高频元素 TypeScript

【每日一题】LeetCode 347. 前 K 个高频元素 TypeScript 给你一个整数数组nums和一个整数k请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。示例 1输入nums [1,1,1,2,2,3], k 2输出[1,2]示例 2输入nums [1], k 1输出[1]示例 3输入nums [1,2,1,2,1,2,3,1,3,2], k 2输出[1,2]提示1 nums.length 105-104 nums[i] 104k的取值范围是[1, 数组中不相同的元素的个数]题目数据保证答案唯一换句话说数组中前k个高频元素的集合是唯一的哈希表桶排序1.建哈希表统计每个数字出现的次数 {13} 表示1出现了3次2.桶数组下标是每个数字出现的次数值是数字可以是多个数出现的次数是相同的3.往后遍历桶把后k个加入列表中function topKFrequent(nums: number[], k: number): number[] { const map new Mapnumber,number() nums.forEach(item{ map.set(item,(map.get(item)||0)1) }) const bucket Array.from({length:nums.length1},()[]) for(const [num,count] of map.entries()){ bucket[count].push(num) } const res:number[] [] for(let ibucket.length-1;res.lengthk;i--){ if(bucket[i].length0){ res.push(...bucket[i]) } } return res };共勉