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(个数)
}
上一篇: Java实现队列