Top K Frequent Elements in Array - |

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