📅  最后修改于: 2023-12-03 15:37:15.477000             🧑  作者: Mango
给定一个包含整数的列表和一个名为 k 的整数,编写一个函数来找到这个列表中前 k 个最常见的元素。
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]
首先,我们需要统计列表中每个元素出现的次数,可以使用 python 中的 Counter 类来完成。接下来,我们按照元素出现的次数从大到小排列,然后返回前 k 个元素即可。
from typing import List
from collections import Counter
def top_k_frequent(nums: List[int], k: int) -> List[int]:
count = Counter(nums)
return [x[0] for x in count.most_common(k)]
该算法遍历列表一次以计算出现次数,其时间复杂度为 O(n)。对出现次数进行排序的时间复杂度为 O(n log n),因此总的时间复杂度为 O(n log n)。空间复杂度取决于存储出现次数的字典,为 O(n)。
本题使用了 python 中的 Counter 类帮助我们统计元素出现的次数,然后排序返回前 k 个元素。该算法的时间复杂度为 O(n log n),空间复杂度为 O(n)。