public class Solution {
public List<Integer> topKFrequent(int[] nums, int k) {
// frequency array
List<Integer>[] freList = new List[nums.length + 1];
// key: value in nums[] value: frequency
Map<Integer, Integer> freMap = new HashMap<Integer, Integer>();
for (int ele : nums) {
freMap.put(ele, freMap.getOrDefault(ele, 0) + 1);
}
for (int key : freMap.keySet()) {
int freq = freMap.get(key);
if (freList[freq] == null) {
freList[freq] = new LinkedList<Integer>();
}
freList[freq].add(key);
}
List<Integer> res = new LinkedList<Integer>();
for (int i = freList.length - 1; i >= 0 && res.size() < k; i-- ) {
if (freList[i] != null) {
res.addAll(freList[i]);
}
}
return res;
}
}[leetCode刷题笔记]347. Top K Frequent Elements
最新推荐文章于 2025-09-30 16:36:44 发布
本文介绍了一种使用Java实现的高效算法来找出数组中出现频率最高的Top K个元素。该算法通过构建频率映射表并利用列表数组来存储不同频率的元素,从而实现了快速查找。适用于需要对大量数据进行频率统计的应用场景。
1200

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



