| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- type pair struct {
 
- 	_1 int
 
- 	_2 int
 
- }
 
- type pairs []pair
 
- func (ps pairs) Len() int           { return len(ps) }
 
- func (ps pairs) Less(i, j int) bool { return ps[i]._1 < ps[j]._1 }
 
- func (ps pairs) Swap(i, j int)      { ps[i], ps[j] = ps[j], ps[i] }
 
- func (ps *pairs) Push(x interface{}) {
 
- 	*ps = append(*ps, x.(pair))
 
- }
 
- func (ps *pairs) Pop() interface{} {
 
- 	i := ps.Len() - 1
 
- 	x := (*ps)[i]
 
- 	*ps = (*ps)[:i]
 
- 	return x
 
- }
 
- func topKFrequent(nums []int, k int) []int {
 
- 	freq := make(map[int]int)
 
- 	for _, i := range nums {
 
- 		freq[i]++
 
- 	}
 
- 	var topK pairs
 
- 	i := 0
 
- 	for key, val := range freq {
 
- 		heap.Push(&topK, pair{val, key})
 
- 		if k == i {
 
- 			heap.Pop(&topK)
 
- 		} else {
 
- 			i++
 
- 		}
 
- 	}
 
- 	res := make([]int, k)
 
- 	for i := range topK {
 
- 		res[i] = topK[i]._2
 
- 	}
 
- 	return res
 
- }
 
 
  |