topK问题 前K个高频元素 leetcode692
Posted KeithTt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了topK问题 前K个高频元素 leetcode692相关的知识,希望对你有一定的参考价值。
给一非空的单词列表,返回前?k?个出现次数最多的单词。
返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。
示例:
输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2
输出: ["i", "love"]
解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。
注意,按字母顺序 "i" 在 "love" 之前。
假定 k 总为有效值, 1 ≤ k ≤ 集合元素数。
输入的单词均由小写字母组成。
代码如下:
class Solution:
def topKFrequent(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: List[int]
"""
count = collections.Counter(nums)
# return heapq.nlargest(k, count.keys(), key=count.get)
return count.most_common(k)
Counter 继承自 dict,默认是降序。
most_common 是基于 heapq 实现的。
合并多个 Counter 对象
count2 = Counter(nums)
count.update(count2)
print(count)
实例:词频统计,取出前5
with open(‘example.txt‘) as f:
txt = f.read()
w = re.split(‘\W+‘, txt)
print(w)
c2 = Counter(w)
res = c2.most_common(5)
print(res)
# [(‘a‘, 21), (‘the‘, 16), (‘to‘, 15), (‘and‘, 12), (‘Service‘, 8)]
参考:
https://leetcode-cn.com/problems/top-k-frequent-words/
https://docs.python.org/3/library/collections.html#counter-objects
https://docs.python.org/3/library/heapq.html
以上是关于topK问题 前K个高频元素 leetcode692的主要内容,如果未能解决你的问题,请参考以下文章