Meeting Room II
输入: [[0, 30],[5, 10],[15, 20]]
输出: 2输入: [[7,10],[2,4]]
输出: 1public int minMeetingRooms(int[][] intervals) {
// 如果没有会议,直接返回0
if(intervals.length == 0) return 0;
// 按照开始时间排序数组
Arrays.sort(intervals, (a,b) -> a[0] - b[0]);
// 定义一个Queue,保存正在进行会议的结束时间
PriorityQueue<Integer> q = new PriorityQueue<>();
int max = 1; // 全局变量
// 遍历每一个会议
for (int[] in:intervals){
// 如果当前会议的开始时间大于等于Queue中会议的结束时间
while (q.size() > 0 && in[0] >= q.peek()){
// 删除掉已经结束的会议
q.poll();
}
// 将当前会议的结束时间加入Queue
q.offer(in[1]);
// 当前同时进行的会议个数为需要会议室的数量
max = Math.max(max, q.size());
}
return max;
}Last updated