Given a non-empty array of integers, return the k most frequent elements.
Example 1:
Input: nums = [1,1,1,2,2,3], k = 2 Output: [1,2]
Example 2:
Input: nums = [1], k = 1 Output: [1]
首先是统计每个数字出现次数。可以用collections.Counter,也可以自己写方法。
然后将次数做为key,数字做为value。同样的次数可能有多个数字,所以要用list保存。
最后就是按数字的出现次数进行排序。返回前k个即可。
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
fre={}
nfre=collections.defaultdict(list)
res=[]
for num in nums:
fre[num]=fre.get(num, 0)+1
for key,v in fre.items():
nfre[v].append(key)
for i in range(len(nums),0,-1):
if i in nfre:
res.extend(nfre[i])
return res[:k]
寻找Top K频繁元素算法

本文介绍了一种从非空整数数组中找出频率最高的K个元素的算法。通过使用collections.Counter统计各数字出现次数,再以次数为键,数字为值进行存储,最后按出现次数排序并返回前K个元素。
472

被折叠的 条评论
为什么被折叠?



