Given a non-empty array of integers, return the k most frequent elements.

from typing import List
from collections import Counter
class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        if not nums or not k:
            return []

        buckets = [[] for _ in range(len(nums))]
        for num, count in Counter(nums).items():
            buckets[len(nums) - count].append(num)
        return sum(buckets, [])[:k]