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 = [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”

Leave a Reply

Your email address will not be published. Required fields are marked *