golang内置排序sort.Slice()

golang内置排序sort.Slice(),第1张

golang内置排序sort.Slice() 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(个数)
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4744160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-08
下一篇 2022-11-08

发表评论

登录后才能评论

评论列表(0条)

保存