码迷,mamicode.com
首页 > 编程语言 > 详细

[LeetCode][Python]Top K Frequent Elements

时间:2016-05-13 17:08:08      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

op K Frequent Elements

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: 

  • 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.

 

 


 

 

求出现频率最高的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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!