347. Top K Frequent Elements
Solution
把array中的元素以及出現次數記錄起來成Entry<k,v>, 其中k是元素值,v是出現次數 PriorityQueue去紀錄每個enrty,並以entry value進行降序排列
public int[] topKFrequent(int[] nums, int k) {
HashMap<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
}
PriorityQueue<Map.Entry<Integer, Integer>> pq = new PriorityQueue<>((e1,e2)-> e2.getValue()-e1.getValue());
for(Map.Entry<Integer, Integer> entry : map.entrySet()){
pq.add(entry);
}
int[] ret = new int[k];
for(int i = 0; i < k; i++){
ret[i] = pq.poll().getKey();
}
return ret;
}
Last updated
Was this helpful?