Given an array of meeting time intervals consisting of start and end times [[s1,e1],
[s2,e2],...]
(si < ei), find the minimum number of conference rooms required.
For example,
Given [[0, 30],[5, 10],[15, 20]]
,
return 2
.
线段最大重叠数
class Solution {
public:
int minMeetingRooms(vector<pair<int,int>>& intervals) {
int len=intervals.size();
if(len==0) return 0;
sort(intervals.begin(),intervals.end(),cmpp);
priority_queue<int,vector<int>,greater<int>> q; //维持当前正在使用的房间!
int res=INT_MIN;
for(int i=0;i<intervals.size();i++) {
while(!q.empty()&&q.top()<=intervals[i].first) {
q.pop();
}
q.push(intervals[i].second);
res=max(res,(int)q.size());
}
return res;
}
private:
static bool cmpp(pair<int,int> a,pair<int,int> b) {
return a.first<b.first;
}
};