本文主要是介绍代码随想录 -- 栈与队列 -- 前 K 个高频元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
347. 前 K 个高频元素 - 力扣(LeetCode)
思路:
定义字典 dic1:记录 nums 中元素出现的次数,key 是元素的值,value 是元素出现的次数;
定义字典 dic2:key 是出现的次数,value 是出现对应次数的元素列表;
定义数组 arr 对 dic2 的 key 进行降序排序;
输出 dic2 中对应次数的 value
class Solution(object):def topKFrequent(self, nums, k):from collections import defaultdictdic1=defaultdict(int)dic2=defaultdict(list)for i in nums:dic1[i]+=1for key,value in dic1.items():dic2[value].append(key)arr=dic2.keys()arr.sort(reverse=True)res=[]count,i=0,0while count<k and i<k:res=res+dic2[arr[i]]count+=len(dic2[arr[i]])i+=1return res
知识点
defaultdict
:
defaultdict
是 Python 标准库 collections
模块中的一个类,它是一个字典类型的子类,用来提供一个默认值,当试图访问字典中不存在的键时,会自动创建这个键,并将其值设置为默认值。
语法:
from collections import defaultdictdic1=defaultdict(list)
这篇关于代码随想录 -- 栈与队列 -- 前 K 个高频元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!