思路:
定义字典 dic1:记录 nums 中元素出现的次数,key 是元素的值,value 是元素出现的次数;
定义字典 dic2:key 是出现的次数,value 是出现对应次数的元素列表;
定义数组 arr 对 dic2 的 key 进行降序排序;
输出 dic2 中对应次数的 value
class Solution(object):
def topKFrequent(self, nums, k):
from collections import defaultdict
dic1=defaultdict(int)
dic2=defaultdict(list)
for i in nums:
dic1[i]+=1
for key,value in dic1.items():
dic2[value].append(key)
arr=dic2.keys()
arr.sort(reverse=True)
res=[]
count,i=0,0
while count<k and i<k:
res=res+dic2[arr[i]]
count+=len(dic2[arr[i]])
i+=1
return res
知识点
defaultdict
:
defaultdict
是 Python 标准库 collections
模块中的一个类,它是一个字典类型的子类,用来提供一个默认值,当试图访问字典中不存在的键时,会自动创建这个键,并将其值设置为默认值。
语法:
from collections import defaultdict
dic1=defaultdict(list)