> For the complete documentation index, see [llms.txt](https://ucan.gitbook.io/notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ucan.gitbook.io/notes/tree/untitled.md).

# 347. Top K Frequent Elements

[Given a non-empty array of integers, return the **k** most frequent elements.](https://leetcode.com/problems/top-k-frequent-elements/)

```java
class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        // maxmium heap
        Map<Integer, Integer> memo = new HashMap<>();
        for(int value : nums){
            memo.put(value, memo.getOrDefault(value, 0)+1);
        }
        int[] res = new int[k];
        int index = 0;
        // maxium heap
        Queue<Integer> maxHeap = new PriorityQueue<>((a,b)->memo.get(b)-memo.get(a));
        for(Integer key : memo.keySet()){
            maxHeap.add(key);
            if(maxHeap.size()==memo.size()-k+1){
                res[index++]=maxHeap.poll(); 
            }
        }
        return res;
    }
}
```
