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 = [1], k = 1 Output: [1]
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
Using a heap is easy to find top k frequent.
Python Solution
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
count = {}
for num in nums:
count[num] = count.get(num, 0) + 1
heap = []
for key, value in count.items():
heapq.heappush(heap, (-value, key))
results = []
for i in range(k):
count, element = heapq.heappop(heap)
results.append(element)
return results
- Time complexity: O(N log(k)).
- Space complexity: O(N).
One Thought to “LeetCode 347. Top K Frequent Elements”