解题思路:
先对每个数字统计词频,然后根据词频来找到最大几个数字即可,在这里,k如果是不固定的,我们可以用极小堆来解决这个问题来得到最大的k个频数。
具体代码如下:
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
my_dict = {}
for num in nums:
if num in my_dict:
my_dict[num] += 1
else:
my_dict[num] = 1
value_set = []
for value in my_dict.values():
if len(value_set) < k:
value_set.append(value)
else:
if value < min(value_set):
pass
else:
value_set.remove(min(value_set))
value_set.append(value)
res = []
for key in my_dict.keys():
if my_dict[key] in value_set:
res.append(key)
return res