package problems.medium;
import java.util.*;
/**
* Created by sherxon on 1/4/17.
*/
public class TopKFrequentElements {
public List<Integer> topKFrequent(int[] a, int k) {
Map<Integer,Integer> map= new HashMap<>();
for(int i:a){
if (!map.containsKey(i)) map.put(i, 1);
else map.put(i, map.get(i)+1);
}
TreeMap<Integer, Set<Integer>> tr= new TreeMap<>((c, b)->b.compareTo(c));
for(Integer ii:map.keySet()){
Integer val=map.get(ii);
if(!tr.containsKey(val))
tr.put(val, new HashSet<>());
tr.get(val).add(ii);
}
int i=0;
List<Integer> list= new ArrayList<>();
for (Integer integer : tr.keySet()) {
if(i>=k)break;
for(Integer num:tr.get(integer)){
if(i>=k)break;
list.add(num);
i++;
}
}
return list;
}
}