标签:
Given a non-empty array of integers, return the k most frequent elements.
For example,
Given [1,1,1,2,2,3]
and k = 2, return [1,2]
.
Note:
求出现频率最高的K个数,要求时间复杂度不能超过 O(n log n)。
选择最简单的快排O(n log n)来解决,先求出每个数出现的几率,然后排序求出结果。
排序的地方用lambda函数,就是一个匿名方法,如果是升序,写成:
list.sort(key=lambda x:x[1])
相当于:
list.sort(lambda a,b:cmp(a[1],b[1]))
1 class Solution(object): 2 def topKFrequent(self, nums, k): 3 """ 4 :type nums: List[int] 5 :type k: int 6 :rtype: List[int] 7 """ 8 self.__dict = {}; list = []; res = [] 9 for item in nums: 10 if self.__dict.has_key(item): 11 self.__dict[item] += 1 12 else: 13 self.__dict[item] = 1 14 for item in self.__dict: 15 list.append((item, self.__dict[item])) 16 list.sort(key=lambda x:-x[1]) 17 for i in range(k): 18 res.append(list[i][0]) 19 return res
[LeetCode][Python]Top K Frequent Elements
标签:
原文地址:http://www.cnblogs.com/Liok3187/p/5489903.html