noah-halford-e7MpGUjTfBA-unsplash.jpg
中等算法给你一个整数数组 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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

代码

  1. /**
  2. * @param {number[]} nums
  3. * @param {number} k
  4. * @return {number[]}
  5. */
  6. var topKFrequent = function (nums, k) {
  7. const map = new Map();
  8. for (let i = 0; i < nums.length; i++) {
  9. if (!map.get(nums[i])) {
  10. map.set(nums[i], 1);
  11. continue;
  12. }
  13. map.set(nums[i], map.get(nums[i]) + 1);
  14. }
  15. const ans = [...map.keys()]
  16. .sort((prev, curt) => {
  17. return map.get(curt) - map.get(prev);
  18. })
  19. .slice(0, k);
  20. return ans;
  21. };