问题描述:
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 logn), where n is the array's size.
Subscribe to see which companies asked this question.
思路:频次排序问题,建立一个dict用来统计出现的次数,然后把这个dict按值进行排序,输出前k个即可
class Solution(object):
def topKFrequent(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: List[int]
"""
d = {}
for num in nums:
if num in d:
d[num]+=1
else:
d[num]=1
temp = sorted(d.items(),key=lambda x:x[1],reverse=True)
r=[]
for i in range(k):
r.append(temp[i][0])
return r