-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTopKFrequent.java
More file actions
31 lines (28 loc) · 920 Bytes
/
Copy pathTopKFrequent.java
File metadata and controls
31 lines (28 loc) · 920 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.*;
public class TopKFrequent {
public int[] topKFrequent(int[] nums, int k) {
HashMap<Integer, Integer> itemFreq = new HashMap<Integer, Integer> ();
for(int n : nums){
itemFreq.put(n, itemFreq.getOrDefault(n,0)+1);
}
List<Integer> freqItems[] = new ArrayList[nums.length+1];
for(int key: itemFreq.keySet()){
int v = itemFreq.get(key);
if(freqItems[v]==null){
freqItems[v] = new ArrayList();
}
freqItems[v].add(key);
}
int ans[] = new int[k];
for(int i = freqItems.length-1; i>0 && k>0; i--){
if(freqItems[i]==null)
continue;
List<Integer> values = freqItems[i];
for(int v: values){
ans[k-1] = v;
k--;
}
}
return ans;
}
}