347. Top K Frequent Elements
class Solution {
public List<Integer> topKFrequent(int[] nums, int k) {
HashMap<Integer, Integer> hash = new HashMap<>();
for (int i : nums) {
hash.put(i, hash.getOrDefault(i, 0) + 1);
}
//use bucket to store numbers by frequency
List<Integer>[] bucket = new ArrayList[nums.length + 1];
for (int i : hash.keySet()) {
int count = hash.get(i);
if (bucket[count] == null) bucket[count] = new ArrayList<>();
bucket[count].add(i);
}
List<Integer> res = new ArrayList<>();
for (int i = bucket.length - 1; i > 0 & k > 0; i--) {
List<Integer> list = bucket[i];
int j = 0;
while (list != null && j < list.size() && k > 0){
res.add(list.get(j++));
k--;
}
}
return res;
}
}Last updated