diff --git a/Random interview questions/Top K frequent/ReadMe.md b/Random interview questions/Top K frequent/ReadMe.md new file mode 100644 index 0000000..ea75e6b --- /dev/null +++ b/Random interview questions/Top K frequent/ReadMe.md @@ -0,0 +1,4 @@ +# Question description + +List the top k times frequently appearing numbers in an array. Example: +[1,1,1,2,2,3] and k = 2 => [1,2] \ No newline at end of file diff --git a/Random interview questions/Top K frequent/TopKFrequent.java b/Random interview questions/Top K frequent/TopKFrequent.java new file mode 100644 index 0000000..e3547d5 --- /dev/null +++ b/Random interview questions/Top K frequent/TopKFrequent.java @@ -0,0 +1,48 @@ +package Random interview questions.Top K frequent; +import java.util.*; + +public class TopKFrequentElements { + + public List topKFrequent(int[] nums, int k) { + Map map = new HashMap<>(); + + for(int num : nums){ + if(map.containsKey(num)) + map.put(num, map.get(num) + 1); + else + map.put(num, 1); + } + + ArrayList[] arr = new ArrayList[nums.length + 1]; + + for(Map.Entry entry : map.entrySet()){ + int index = entry.getValue(); + + if(arr[index] == null){ + arr[index] = new ArrayList<>(); + } + + arr[index].add(entry.getKey()); + } + + List list = new ArrayList<>(); + + for(int i = arr.length - 1; i >= 0; i--){ + if(list.size() == k) + break; + + if(arr[i] != null){ + list.addAll(arr[i]); + } + } + + return list; + } + + public static void main(String[] args){ + TopKFrequentElements topKFrequentElements = new TopKFrequentElements(); + + System.out.println(topKFrequentElements.topKFrequent(new int[]{1,1,1,2,2,3}, 2).toString()); + } +} +