类型:堆
-
- 前 K 个高频元素 💛
https://leetcode-cn.com/problems/top-k-frequent-elements/
❓ 返回数组中出现频率前 k 高的元素。
💡 哈希 + 堆
先用哈希记录每个元素的出现次数。再以出现次数为比较键构建堆。
class Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: if not nums: return [] counts = {} for num in nums: if num in counts: counts[num] += 1 else: counts[num] = 1 heap = [] for num in counts: count = counts[num] if len(heap) < k or count > heap[0][0]: heapq.heappush(heap, (counts[num], num)) if len(heap) > k: heapq.heappop(heap) ans = [] for (_, num) in heap: ans.append(num) return ans