package main
import (
"fmt"
"sort"
)
func PrintKMostFrequentNumbers(arr []int, K int) {
mp := make(map[int]int)
size := len(arr)
for i := 0; i < size; i++ {
mp[arr[i]]++
}
type kv struct {
Key int
Value int
}
var sortedPairs []kv
for k, v := range mp {
sortedPairs = append(sortedPairs, kv{k, v})
}
sort.Slice(sortedPairs, func(i, j int) bool {
return sortedPairs[i].Value > sortedPairs[j].Value
})
for i := 0; i < K && i < len(sortedPairs); i++ {
fmt.Println(sortedPairs[i].Key)
}
}
func main() {
arr := []int{4, 5, 19, 50, 5, 19, 5, 8, 19, 3, 3, 6, 3, 27, 19, 3, 3}
K := 2
PrintKMostFrequentNumbers(arr, K)
}
/*
run:
3
19
*/