题目链接
代码
func topKFrequent(nums []int, k int) []int {
// 统计每种元素出现的次数
cnt := map[int]int{}
for _, val := range nums {
cnt[val]++
}
// 元素<=>出现次数做一个映射,放到堆中,按照出现次数排序
t := [][]int{}
for num, time := range cnt {
fmt.Println(num, time)
t = append(t, []int{time, num})
}
// 对二维切片进行降序排序
sort.Slice(t, func(i, j int) bool {
return t[i][0] > t[j][0]
})
ans := []int{}
// 取前k个元素作为答案
for k > 0 {
ans = append(ans, t[0][1])
t = t[1:]
k--
}
return ans
}