- 链接:力扣上实战题
- 类似于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(个数) }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)