
给你一个会议时间安排的数组 intervals ,
每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,
返回 所需会议室的最小数量
/**
* 253. 会议室 II
* @param intervals 会议时间安排数组
* @return 使用的会议室数目
*/
public int minMeetingRooms(int[][] intervals) {
int len = intervals.length;
int[] starts = new int[len];
int[] ends = new int[len];
//申请两个数组分别存储会议的开始时间和结束时间
for(int i=0; i<len; i++){
starts[i] = intervals[i][0];
ends[i] = intervals[i][1];
}
//对会议时间分别进行排序
Arrays.sort(starts);
Arrays.sort(ends);
//遍历会议开始时间和结束时间的数组
int res = 0;
int cnt = 0;
int i=0,j=0;
while(i<len&&j<len){
//如果会议没结束,出现新的开始会议时间,那么相当于使用一个新会议室
//每一个会议开始时间肯定有一个对应的结束时间,不可能出现cnt<0的情况
if(starts[i]<ends[j]){
cnt++;
i++;
}else{
//开始时间大于结束时间,表示上个会议结束,会议室空出
cnt--;
j++;
}
res = Math.max(res,cnt);
}
return res;
}