Top K Frequent Elements in Array - |
Given a non-empty array of integers, find the top k elements which have the highest frequency in the array. If two numbers have the same frequency then the larger number should be given preference.
Example 1:
Input:
nums = {1,1,1,2,2,3},
k = 2
Output: {1 , 2 }
Example 2:
Input:
nums = {1,1,2,2,3,3,3,4},
k = 2
Output: {3, 2}
Explanation: Elements 1 and 2 have the
same frequency ie. 2. Therefore, in this
case, the answer includes the element 2
as 2 > 1.
User Task:
The task is to complete the function topK() that takes the array and integer k as input and returns a list of top k frequent elements.
Expected Time Complexity : O(NlogN)
from collections import Counter
class Solution:
def topK(self, nums, k):
self.nums=nums
self.k=k
lis=Counter(nums)
l=[]
#res=sorted(lis, key = lis.count,reverse = True)
for key,val in lis.items():
l.append([-val,-key])
l.sort()
#return l
res=[]
for _, key in l:
res.append(-key)
return res[:k]
Michael Elkan