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.
class Solution(object):
def topKFrequent(self, nums, k):
dic = {}
for i in nums:
dic[i] = dic.get(i,0) + 1
#print dic.items()
l = sorted(dic.iteritems(),key = lambda d:d[1], reverse = True)
res = []
for i in xrange(k):
res += l[i][0],
return res