由于每个会议都要按期进行,所以我们首先按照会议开始的时间排序
那么如何申请会议室呢?对于给定一个时刻,我们要找到之前最早结束的会议时间,看看这个结束时间是否早于当前会议开始时间,如果早于,那么不用再申请新的会议室,否则,我们就要去申请新的会议室。
如何查找到最早结束会议的时间,用最小堆来维护。
class Solution {
public:
int minMeetingRooms(vector<vector<int>>& intervals) {
sort(intervals.begin(),intervals.end());
priority_queue<int,vector<int>,greater<int>> q;
int res = 0;
for(auto interval:intervals){
if(q.empty()||interval[0]<q.top()) res++;
else q.pop();
q.push(interval[1]);
}
return res;
}
};