# LeetCode 347. Top K Frequent Elements

## Description

https://leetcode.com/problems/top-k-frequent-elements/

Given a non-empty array of integers, return the k most frequent elements.

Example 1:

```Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]
```

Example 2:

```Input: nums = , k = 1
Output: ```

Note:

• You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
• Your algorithm’s time complexity must be better than O(n log n), where n is the array’s size.
• It’s guaranteed that the answer is unique, in other words the set of the top k frequent elements is unique.
• You can return the answer in any order.

## Explanation

Use heap is easy to find top k frequent.

## Python Solution

``````class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:

counter = {}
for num in nums:
counter[num] = counter.get(num, 0) + 1

k_keys_sorted_by_values = heapq.nlargest(k, counter, key=counter.get)

return k_keys_sorted_by_values``````
• Time complexity: O(N log(k)).
• Space complexity: O(N).