347 前k个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]
示例 2:
输入: nums = [1], k = 1
输出: [1]
思路
字典计数器
采用defaultdict作为每个元素出现次数的计数器,然后返回排列在前k的元素。
代码:
class Solution(object):
def topKFrequent(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: List[int]
"""
result = []
num_dict = defaultdict(int)
for item in nums:
num_dict[item] += 1
temp = list(zip(num_dict.values(), num_dict.keys())) # zip函数 返回的是元组列表
temp = sorted(temp, reverse=True)
for i in range(k):
result.append(temp[i][1])
return result