Frequency 类问题
速度尚可,超过65.15%
public class Solution {
private class Node implements Comparable<Node>{
int key;
int frequency;
public Node(int key, int frequency){
this.key = key;
this.frequency = frequency;
}
public int compareTo(Node a){
return a.frequency - this.frequency;
}
}
public List<Integer> topKFrequent(int[] nums, int k) {
PriorityQueue<Node> maxHeap = new PriorityQueue<Node>();
HashMap<Integer, Node> map = new HashMap<>();
List<Integer> list = new ArrayList<>();
for(int i = 0; i < nums.length; i++){
if(!map.containsKey(nums[i])){
map.put(nums[i], new Node(nums[i], 1));
} else {
Node node = map.get(nums[i]);
node.frequency ++;
map.put(nums[i], node);
}
}
for(Integer key : map.keySet()){
maxHeap.offer(map.get(key));
}
for(int i = 0; i < k; i++){
list.add(maxHeap.poll().key);
}
return list;
}
}
大数据情况下, top K frequent
Last updated