1229. Meeting Scheduler
Input: slots1 = [[10,50],[60,120],[140,210]], slots2 = [[0,15],[60,70]], duration = 8
Output: [60,68]Input: slots1 = [[10,50],[60,120],[140,210]], slots2 = [[0,15],[60,70]], duration = 12
Output: []// Priority Queue
vector<int> minAvailableDuration(vector<vector<int>>& slots1, vector<vector<int>>& slots2, int duration) { //time: O((m + n) * log(m + n)); space: O(m + n)
priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > pq;
for (const auto& slot : slots1) {
if (slot[1] - slot[0] >= duration) pq.push({slot[0], slot[1]});
}
for (const auto& slot : slots2) {
if (slot[1] - slot[0] >= duration) pq.push({slot[0], slot[1]});
}
while (pq.size() > 1) {
int end = pq.top().second; pq.pop();
int start = pq.top().first;
if (end >= start + duration) return {start, start + duration};
}
return {};
}Last updated