Top K Frequent Elements

MediumArrayHash TableDivide and ConquerSortingHeap (Priority Queue)Bucket SortCountingQuickselect

Solution

export function topKFrequent(nums: number[], k: number): number[] {
  const counter = new Map<number, number>();
 
  const getCount = (num: number) => counter.get(num) ?? 0;
  const sortByFreq = (a: number, b: number) => getCount(b) - getCount(a);
 
  for (const num of nums) {
    counter.set(num, getCount(num) + 1);
  }
 
  return [...counter.keys()].sort(sortByFreq).slice(0, k);
}