How to find K most frequent elements in an unsorted array with Go

1 Answer

0 votes
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

*/

 



answered Nov 29, 2024 by avibootz
...