目录
优先队列
向上:新增节点
向下:堆顶被取
初始化大小为n的堆,时间复杂度:O(n)
LetCode:347. 前 K 个高频元素
class Solution {
public static int[] topKFrequent(int[] nums, int k) {
int[] result = new int[k];
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int temp : nums) {
if (map.containsKey(temp)) {
map.put(temp, map.get(temp) + 1);
} else {
map.put(temp, 1);
}
}
Queue<Map.Entry<Integer, Integer>> priQueue = new PriorityQueue<Map.Entry<Integer, Integer>>(k,
(o1,o2) -> o2.getValue() - o1.getValue() );
Set<Map.Entry<Integer, Integer>> set = map.entrySet();
Iterator<Map.Entry<Integer, Integer>> iter = set.iterator();
while (iter.hasNext()) {
Map.Entry<Integer, Integer> me = iter.next();
priQueue.add(me);
}
for (int i = 0; i < k; i++) {
result[i] = priQueue.poll().getKey();
}
return result;
}
}
图
785
前缀树
212 深度广度
线段树
315
树状数组
总结