← Arrays

Top K Frequent

Medium
Python
def top_k_frequent(nums,k):
    count={}
    for n in nums: count[n]=count.get(n,0)+1
    return sorted(count,key=count.get,reverse=True)[:k]
Java
public int[] topKFrequent(int[] nums,int k){
    Map<Integer,Integer> cnt=new HashMap<>();
    for(int n:nums) cnt.put(n,cnt.getOrDefault(n,0)+1);
    return cnt.entrySet().stream().sorted((a,b)->b.getValue()-a.getValue()).limit(k).mapToInt(Map.Entry::getKey).toArray();
}

Key Insight

Python sorted(key=count.get) concise. Java Stream verbose.

Python → Java Differences

  • sorted(key=count.get) elegant
  • Java Stream verbose
  • [:k] vs .limit(k)
Python
def top_k_frequent(nums,k):
    count={}
    for n in nums: count[n]=count.get(n,0)+1
    return sorted(count,key=count.get,reverse=True)[:k]
Java
public int[] topKFrequent(int[] nums,int k){
    Map<Integer,Integer> cnt=new HashMap<>();
    for(int n:nums) cnt.put(n,cnt.getOrDefault(n,0)+1);
    return cnt.entrySet().stream().sorted((a,b)->b.getValue()-a.getValue()).limit(k).mapToInt(Map.Entry::getKey).toArray();
}

Algorithm Steps

1. Count frequencies
2. Sort desc
3. Return top k