Skip to content

Top K Frequent Elements

from typing import List
import heapq

def topKFrequent(nums: List[int], k: int) -> List[int]:
    num_counter = {}



    for num in nums:
        if num in num_counter:
            num_counter[num] += 1
        else:
            num_counter[num] = 1

    print(num_counter)
    heap = []
    for number, frequency in num_counter.items():
        if len(heap) == k:
            popped = heapq.heappushpop(heap, (frequency, number))
            print(f"popped: {popped}, new: ", heap)
        else: 
            heapq.heappush(heap, (frequency, number))
            print("pushed, new:", heap)

    most_frequent = []

    return [item[1] for item in heap]



nums = [1,2,1,2,1,2,3,1,3,2]
k = 2

topKFrequent(nums, k)
{1: 4, 2: 4, 3: 2}

pushed, new: [(4, 1)]

pushed, new: [(4, 1), (4, 2)]

popped: (2, 3), new:  [(4, 1), (4, 2)]
[1, 2]