int maxOverlap(vector<vector<int>>& intervals) {
vector<pair<int, int>> events;
for (auto& interval : intervals) {
events.push_back({interval[0], 1});
events.push_back({interval[1], -1});
}
sort(events.begin(), events.end());
int maxCount = 0, count = 0;
for (auto& event : events) {
count += event.second;
maxCount = max(maxCount, count);
}
return maxCount;
}
优先队列示例:
int minMeetingRooms(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end());
priority_queue<int, vector<int>, greater<int>> endTimes;
for (auto& interval : intervals) {
if (!endTimes.empty() && endTimes.top() <= interval[0]) {
endTimes.pop();
}
endTimes.push(interval[1]);
}
return endTimes.size();
}