题目001 使用PriorityQueue 获取最大/最小N个数
public class PriorityQueueTest { private static PriorityQueue<Integer> maxHeap, minHeap; public static void main(String[] args) { int[] arr = {7, 5, 15, 3, 17, 2, 20, 24, 1, 9, 12, 8}; findNLargest(arr, 4); findNsmallest(arr, 4); } /** * 从数组中找最大的前N个 * * @param nums * @param k * @return */ public static int findNLargest(int[] nums, int k) { PriorityQueue<Integer> minQueue = new PriorityQueue<>(k); for (int num : nums) { if (minQueue.size() < k || num > minQueue.peek()) minQueue.offer(num); if (minQueue.size() > k) minQueue.poll(); } for (; 0 < minQueue.size(); ) { System.out.print(minQueue.poll() + ","); } System.out.println(); return 0; } /** * 从数组中找出最小的前N个 * * @param nums * @param k * @return */ public static int findNsmallest(int[] nums, int k) { PriorityQueue<Integer> minQueue = new PriorityQueue<>((a, b) -> b - a); for (int num : nums) { if (minQueue.size() < k || num < minQueue.peek()) minQueue.offer(num); if (minQueue.size() > k) minQueue.poll(); } for (; 0 < minQueue.size(); ) { System.out.print(minQueue.poll() + ","); } System.out.println(); return 0; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix