提示
给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,返回 所需会议室的最小数量 。
示例 1:
输入: intervals = [[0,30],[5,10],[15,20]]
输出: 2
示例 2:
输入: intervals = [[7,10],[2,4]]
输出: 1
提示:
1 <= intervals.length <= 1040 <= starti < endi <= 106
解题答案
class Solution {
public int minMeetingRooms(int[][] intervals) {
Arrays.sort(intervals, (int[] m1, int[] m2) -> m1[0] - m2[0]);
PriorityQueue<Integer> heap = new PriorityQueue<>();
heap.add(intervals[0][1]);
for (int i = 1; i < intervals.length; i++) {
if (!heap.isEmpty() && intervals[i][0] >= heap.peek()) { // 可以共用一个会议室
heap.remove();
}
heap.add(intervals[i][1]);
}
return heap.size();
}
}