问题
给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],…] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排
例子
思路
-
方法1
$$$$
统计同一时刻进行的最大会议的数量(也即需要的最多房间)
分别按照开始时间和结束时间排序,遍历两个数组 -
方法2
$$$$
每当有新会议时,就遍历所有房间,如果有空房间(新会议的结束时间>=堆顶会议的结束时间:因为堆顶是最早结束的,如果它还不结束,则其他的都不结束),不用开新房间了,更新旧房间的结束时间,否则开新房间
使用优先队列,最小堆,堆顶为结束时间最早的会议
代码
//方法1
class Solution {
public int minMeetingRooms(int[][] arr) {
int[] b = new int[arr.length];
int[] e = new int[arr.length];
for(