本文介绍一些 Java 中数据类型 PriorityQueue 的简单使用方法。
优先队列介绍
常用方法:
pq.offer(num); // 添加一个元素
pq.poll(); // 移除并返回队首的元素
pq.peek(); // 返回队首的元素
小根堆
默认的就是从小到大排序的小根堆。
PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
大根堆
在这里插入代码片
自定义优先队列
// 按照第一个元素从大到小进行排序
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> b[0] - a[0]);
一般来讲,对于 lambda 自定义排序:
(a, b) -> a - b // 表示升序
(a, b) -> b - a // 表示降序
例题
https://leetcode.cn/problems/kth-largest-element-in-a-stream/
https://leetcode.cn/problems/reconstruct-itinerary/