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)