【优先级队列】主持人调度(二)
2026/5/8 5:50:35 网站建设 项目流程

求解代码

publicintminmumNumberOfHost(intn,int[][]startEnd){Arrays.sort(startEnd,(a,b)->{if(a[0]==b[0]){returnInteger.compare(a[1],b[1]);}returnInteger.compare(a[0],b[0]);});PriorityQueue<Integer>queue=newPriorityQueue<>();intmaxHost=0;for(int[]activity:startEnd){while(!queue.isEmpty()&&queue.peek()<=activity[0]){queue.poll();}queue.offer(activity[1]);maxHost=Math.max(maxHost,queue.size());}returnmaxHost;}

踩坑记录

❌1.排序比较器整数溢出

Arrays.sort(startEnd,(a,b)->(a[0]==b[0]?b[1]-a[1]:a[0]-b[0]));

❌2.返回值不能返回最后的堆大小

returnqueue.size();//

因为题目要的是整个过程中,堆出现过的最大大小。

❌3.释放主持人只用 if可能不够

if(queue.peek()<=activity[0]){queue.poll();}

因为实际情况下可能有多个活动已经结束。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询