前k个高频元素——sort.Slice

45 阅读1分钟

image.png

sort.Slice函数,我们只需传入一个比较函数实现即可:

sort.Slice(slice, func(i,j int) bool {})
func topKFrequent(nums []int, k int) []int {
    cnt := make(map[int]int)
    for _,v := range nums {
        cnt[v]++
    }
    ns := make([]int,len(cnt))
    i := 0
    for v,_ := range cnt {
        ns[i] = v
        i++
    }
    sort.Slice(ns, func(i,j int) bool {
        return cnt[ns[i]] > cnt[ns[j]]
    })
    return ns[:k]
}