【Leetcode】Top K Frequent Elements Python实现

来源:互联网 发布:蓝光原盘播放软件tmt 编辑:程序博客网 时间:2024/06/10 06:46

Problem description:

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.

Python 求解:

问题需要得到出现次数排名前K的元素,很容易想到hash table来做,元素的值对应着其出现的次数。在python中,字典和hash表类似,现在用python dict来做。

def topKFrequent(self, nums, k):    alist=[]    bdict=dict()    dlist=[]    for i in range(0,len(nums)):        if(nums[i] not in alist):           alist.append(nums[i])           bdict[nums[i]]=1        else:           bdict[nums[i]]+=1    clist = sorted(bdict.iteritems(), key=lambda bdict : bdict[1], reverse=True)    for i in clist:        dlist.append(i[0])    return dlist[0:k]
0 0