力扣刷题-前k个高频元素

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

你可能感兴趣的:(leetcode刷题,leetcode,算法,python,数据结构)