给你一个整数数组
nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按 任意顺序 返回答案。
哈希统计 + 小顶堆思路:
- 先用字典统计每个数字出现次数
- 用大小为 K 的小顶堆保存频率最高的 K 个
- 最后取出堆中元素
- 时间复杂度 O(n log k)
python
import heapq
from collections import Counter
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
count = Counter(nums)
topk = heapq.nlargest(k, count.keys(), key=lambda x:count[x])
return topk