# LeetCode-347-前 K 个高频元素
思路
用一个哈希表记录每种数字出现的次数。然后以次数作为数组下标,存储数字。把前K个加入到结果中。
代码
public int[] topKFrequent(int[] nums, int k) {
int []res=new int[k];
Map<Integer,Integer> map=new HashMap<>();
for(int num:nums){
if(map.containsKey(num)){
map.put(num,map.get(num)+1);
}
else{
map.put(num,1);
}
}
List<Integer>[] list=new List[nums.length+1];
for(int key:map.keySet()){
int i=map.get(key);
if(list[i]==null)list[i]=new ArrayList<>();
list[i].add(key);
}
int j=0;
for(int i=nums.length;i>0&&j<k;i--){
if(list[i]==null)continue;
for(int num:list[i]){
res[j++]=num;
}
}
return res;
}
|