leetcode

我的 leetcode 题解(JavaScript)


const topKFrequent = function (nums, k) {
  const hashmap = {}, bucket = [], res = [];
  for (let i = 0, ii = nums.length; i < ii; ++i) {
    hashmap[nums[i]] = hashmap[nums[i]] ? hashmap[nums[i]] + 1 : 1;
  }
  const hashmapkey = Object.keys(hashmap);
  for (let i = 0, ii = hashmapkey.length; i < ii; ++i) {
    if (!bucket[hashmap[hashmapkey[i]]]) {
      bucket[hashmap[hashmapkey[i]]] = [];
    }
    bucket[hashmap[hashmapkey[i]]].push(hashmapkey[i]); // 把出现次数相等的数字放到一个桶里
  }
  for (let i=bucket.length-1; i>0 && k>res.length; --i) {
    if (bucket[i]) {
      res.push(...bucket[i]);
    }
  }
  return res;
};