leetcode 347. Top K Frequent Elements(python)

255 阅读1分钟

描述

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]

Note:

  • You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
  • Your algorithm's time complexity must be better than O(n log n), where n is the array's size.
  • It's guaranteed that the answer is unique, in other words the set of the top k frequent elements is unique.
  • You can return the answer in any order.

解析

根据题意,找出 nums 中出现频率最高的 k 个元素,直接用内置的 Counter.most_common() 方法取出即可。

解答

class Solution(object):
    def topKFrequent(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: List[int]
        """
        c = collections.Counter(nums)
        res = []
        for x in c.most_common(k):
            tmp = x[0]
            if tmp not in res :
                res.append(tmp)
        return res
        
        	      
		

运行结果

Runtime: 92 ms, faster than 36.04% of Python online submissions for Top K Frequent Elements.
Memory Usage: 17 MB, less than 32.54% of Python online submissions for Top K Frequent Elements.

原题链接:leetcode.com/problems/to…

您的支持是我最大的动力