欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

golang内置排序sort.Slice()

程序员文章站 2024-03-01 13:21:40
...

golang内置的排序sort.Slice()

直接上例子

代码

  • 类似于java中的重写compare方法;
func topKFrequent(nums []int, k int) []int {
    n2p := make(map[int]int) //利用map统计元素和出现次数的对应关系
    for _, n := range nums {
        n2p[n]++
    }

    var priorities []Priority //优先级队列的数组
    for n, p := range n2p {
        priorities = append(priorities, Priority{n, p})
    }

    sort.Slice(priorities, func(i, j int) bool {
        return priorities[i].p > priorities[j].p // 按照出现次数从大到小进行排序
    })

    res := make([]int, k)
    for i, p := range priorities[:k] {
        res[i] = p.n
    }
    return res 
}

// 自己重新定义优先队列的优先度排序即可
type Priority struct {
    n int // num(元素)
    p int // priority(个数)
}