Top K Frequency (easy)

Given a list of elements, find the the frequency of elements that are greater than or equal to k.
For example,  a list of [3, 2, 3, 1, 1, 1] and k=2 should return [1, 3] .

function top_k(elements: number[], k: number) {
  const set: { [key: number]: number } = {}

  for (let e of elements) {
    const count = set[e] ?? 0
    set[e] = count + 1
  }

  let output: number[] = []

  const entries: [string, number][] = Object.entries(set)
  entries.sort((a, b) => b[1] - a[1])

  let count = 0

  for (let [key, v] of entries) {
    if (count < k) {
      output.push(Number(key))
      count++
    } else {
      break
    }
  }

  console.log(output)
}

// { 3: 2, 2: 1, 1: 3}
top_k([3, 2, 3, 1, 1, 1], 2)
top_k([3, 2, 3, 1, 1, 1], 3)
top_k([3, 2, 3, 1, 1, 1], 1)

 

Scroll to top