news 2026/8/30 20:22:33

A.每日一题——2402. 会议室 III

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
A.每日一题——2402. 会议室 III

题目链接:2402. 会议室 III(困难)

算法原理:

解法:堆+队列

69ms击败84.18%

时间复杂度O(Nlogn)

①会议排序:将所有会议按开始时间升序排列,保证按时间顺序处理每一场会议
②双优先队列初始化:
空闲队列:小顶堆(按会议室编号排序),优先分配编号小的空闲会议室;
使用队列:小顶堆(先按会议结束时间升序,结束时间相同时按会议室编号升序),优先获取最早结束 / 编号最小的可用会议室
③逐场处理会议:
释放:将当前会议开始前已结束的会议室从 “使用队列” 移回 “空闲队列”;
分配:有空闲会议室则直接分配,无空闲则等待 “使用队列” 中最早结束的会议室,同步延后当前会议的结束时间;
④记录:更新该会议室的使用次数,并将当前会议的结束时间 + 会议室编号加入 “使用队列”
结果统计:遍历统计数组,找到使用次数最多的会议室(次数相同选编号最小的)

答疑

Q1:为什么using队列的类型要用long[]型而不是int[]型呢?

因为处理过程中产生的延迟结束时间必须用long来存储,否则延后的太多int可能会溢出

Q2:为什么比较的是long但compare的返回值不能是long?

因为重写compare方法时,返回值必须是int,咱可以直接用Long.comapre(),因为它已经帮咱处理完long的类型且返回值也是int,也可以相减后强转成int,但不建议

Q3:为什么m是int[][]型的,比较器传的时候却是int[]型呢?为什么using队列是long[]型,比较器传的就是long[]型呢?为什么不是long呢?

就看你是根据什么比较的!

int[][] m的元素是int[]→比较器是Comparator<int[]>,比较两个int[]元素

PriorityQueue<long[]> using的元素是long[]→比较器是Comparator<long[]>,比较两个long[]元素

Java代码:

class Solution { public int mostBooked(int n, int[][] m) { //将所有会议按时间升序排序 // Arrays.sort(m,(a,b)->a[0]-b[0]); Arrays.sort(m,new Comparator<int[]>(){ @Override public int compare(int[] a,int[] b){ return a[0]-b[0]; } }); //建小根堆,优先分配编号小的空闲会议室 PriorityQueue<Integer> id=new PriorityQueue<>(); //初始化 for(int i=0;i<n;i++) id.offer(i); //正在使用的会议室 //格式[结束时间,会议室编号]先按结束时间排序,再把会议室编号小的放前面 //写法一 // PriorityQueue<long[]> using=new PriorityQueue<>( // (a,b)->a[0]!=b[0]?Long.compare(a[0],b[0]):Long.compare(a[1],b[1]) // ); //写法二: // PriorityQueue<long[]> using=new PriorityQueue<>( // (a,b)->a[0]!=b[0]?(int)(a[0]-b[0]):(int)(a[1]-b[1]) // ); //写法三: PriorityQueue<long[]> using=new PriorityQueue<>( new Comparator<long[]>(){ @Override public int compare(long[] a,long[] b){ int tmp=a[0]!=b[0]?1:-1; if(tmp==1) return (int)(a[0]-b[0]); return (int)(a[1]-b[1]); } }); //记录每个会议室被预定的次数,(索引->会议室编号,值->次数) int[] count =new int[n]; //按顺序处理每一场会议 for(int[] t:m){ long start=t[0]; long end=t[1]; //释放当前会议开始前已经结束的会议室 //把结束时间<=当前会议开始时间的会议室放回空闲队列 while(!using.isEmpty()&&using.peek()[0]<=start){ //弹出已结束的会议室,获取其编号并加入空闲队列 int roomid=(int)using.poll()[1]; id.offer(roomid); } int assign;//分配给当前会议的会议室编号 //情况1:有空闲会议室 if(!id.isEmpty()) assign=id.poll(); //情况2:无空闲会议室->等待最早结束的会议室释放 else{ long[] early=using.poll();//弹出最早结束的会议室信息 long endtime=early[0];//该会议室的结束时间 int roomid=(int)early[1];//该会议室的编号 //当前会议需要延时开始,结束时间也同步延 //延后时长=会议室结束时间-当前会议原开始时间 end=end+(endtime-start); assign=roomid;//分配这个刚释放的会议室 } //将当前会议的结束时间和分配的会议室编号加入正在使用的队列 using.offer(new long[]{end,assign}); //该会议室的预定次数+1 count[assign]++; } //找出预定次数最多的会议室,次数相同选编号最小的 int ret=0; for(int i=0;i<n;i++) if(count[i]>count[ret]) ret=i; return ret; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 8:06:08

NVIDIA AI Associate

Day 1 GPU 架构与 AI 加速底座全解析0. 前言在 NVIDIA 生成式 AI 认证考试中&#xff0c;底层硬件知识占比约 15-20%。工程师不仅要懂算法&#xff0c;更要懂算力是如何在晶体管层面流动的。本章重点解决&#xff1a;为什么 AI 必须用 GPU&#xff1f;NVIDIA 的硬件凭什么领先&…

作者头像 李华
网站建设 2026/8/30 0:03:27

2025的10个灵魂拷问:比新年计划更有用

年末不止是时间的节点&#xff0c;更是自我梳理的契机。比起盲目制定新年计划&#xff0c;先做好年度反思&#xff0c;才能找准成长方向。这10个深度问题&#xff0c;帮你盘点2025的得与失&#xff0c;为2026的前行蓄力&#xff01;1.目标达成&#xff1a;年初核心目标与年末现…

作者头像 李华
网站建设 2026/8/29 8:04:59

【语音识别】基于K近邻分类算法的语音情感识别附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/8/29 8:05:30

VMware NSX 4.2 - 主机传输节点配置

简介 在 VMware NSX 中&#xff0c;主机传输节点&#xff08;Host Transport Node&#xff09;就是把 ESXi 主机转化为 NSX 的数据平面节点&#xff0c;它负责承载虚拟网络的流量转发、防火墙和安全策略执行&#xff0c;是 NSX 架构里“数据平面”的核心组成部分。 &#x1f…

作者头像 李华
网站建设 2026/8/29 8:05:30

【直流微电网保护】【本地松弛母线、光伏系统、电池和直流负载】【光伏系统使用标准的光伏模型+升压变换器】【电池使用标准的锂离子电池模型+双有源桥变换器】附Simulink仿真

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/8/22 0:18:25

提示工程架构师手册:构建多样性提示的完整指南

提示工程架构师手册&#xff1a;从0到1构建多样性提示的完整指南 关键词 提示工程&#xff08;Prompt Engineering&#xff09;、多样性提示&#xff08;Diverse Prompting&#xff09;、生成式AI&#xff08;Generative AI&#xff09;、上下文学习&#xff08;In-Context L…

作者头像 李华