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;
}
这篇博客介绍了如何解决LeetCode中的第347题,即找出数组中出现频率最高的前K个元素。博主通过使用哈希表记录数字的出现次数,并以次数为下标存储数字,再按频率排序,最终提取出前K个高频元素。这种方法高效地实现了问题的解决方案。
1477

被折叠的 条评论
为什么被折叠?



