LeetCode 347: Top K Frequent Elements — Step-by-Step Visual Trace
Medium — Hash Table | Heap | Priority Queue | Frequency Counting
The Problem
Given an array of integers and a number k, return the k most frequently occurring elements in the array.
Approach
Build a frequency map of all elements, then use a min-heap of size k to track the k most frequent elements. For each element, push it to the heap and pop the least frequent if heap size exceeds k.
Time: O(n log k) · Space: O(n)
Code
import heapq
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
frequency_map = {}
for num in nums:
frequency_map[num] = frequency_map.get(num, 0) + 1
min_heap = []
for num, frequency in frequency_map.items():
heapq.heappush(min_heap, (frequency, num))
if len(min_heap) > k:
heapq.heappop(min_heap)
return [num for frequency, num in min_heap]
Watch It Run
Try it yourself: Open TraceLit and step through every line.
Built with TraceLit — the visual algorithm tracer for LeetCode practice.
Comments