# Python Solution
from collections import Counter
from typing import List
 
def topKFrequent(nums: List[int], k: int) -> List[int]:
    # Count frequency of each number
    counter = Counter(nums)
 
    # Sort by frequency and get top k elements
    # counter.most_common() returns list of tuples (element, frequency)
    return [num for num, _ in counter.most_common(k)]
 

Counter (Bucket Sort)

count = {}
freq = [[] for i in range(len(nums) + 1)]
 
for num in nums
	count[num] = 1 + count.get(num, 0)
for num, cnt in count.items():
	freq[cnt].append(num)