LC 速查

HOT 100索引 › B13 堆 Heap

LC 347前 K 个高频元素Top K Frequent Elements 中等

返回整数数组中出现频率前 k 高的元素,顺序任意,题目保证答案唯一。

思路 Counter 计频后按频率放入桶(下标即频率),从高频向低频收集满 k 个即返回;O(n)。

class Solution:
    def topKFrequent(self, nums: List[int],
                     k: int) -> List[int]:
        cnt = Counter(nums)
        buckets = [[] for _ in range(len(nums) + 1)]
        for x, c in cnt.items():
            buckets[c].append(x)
        ans = []
        for c in range(len(buckets) - 1, 0, -1):
            for x in buckets[c]:
                ans.append(x)
                if len(ans) == k:
                    return ans
        return ans
← 上一题 数组中的第K个最大元素数据流的中位数 下一题 →