Challenge - 5 Problems
Meeting Rooms Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediateOutput of minimum meeting rooms required
What is the output of the following C++ code that calculates the minimum number of meeting rooms required for given intervals?
DSA C++
#include <iostream> #include <vector> #include <algorithm> #include <queue> using namespace std; int minMeetingRooms(vector<pair<int,int>>& intervals) { if(intervals.empty()) return 0; sort(intervals.begin(), intervals.end(), [](auto &a, auto &b){ return a.first < b.first; }); priority_queue<int, vector<int>, greater<int>> minHeap; minHeap.push(intervals[0].second); for(int i = 1; i < intervals.size(); i++) { if(intervals[i].first >= minHeap.top()) { minHeap.pop(); } minHeap.push(intervals[i].second); } return minHeap.size(); } int main() { vector<pair<int,int>> intervals = {{0, 30}, {5, 10}, {15, 20}}; cout << minMeetingRooms(intervals) << endl; return 0; }
Attempts:
2 left
💡 Hint
Think about how many meetings overlap at the same time.
✗ Incorrect
The code sorts intervals by start time and uses a min-heap to track the earliest ending meeting. It pops from the heap when a meeting room is freed. The maximum heap size is the minimum rooms needed. Here, two meetings overlap, so 2 rooms are needed.
❓ Predict Output
intermediateMinimum rooms for non-overlapping meetings
What is the output of this code for intervals with no overlaps?
DSA C++
#include <iostream> #include <vector> #include <algorithm> #include <queue> using namespace std; int minMeetingRooms(vector<pair<int,int>>& intervals) { if(intervals.empty()) return 0; sort(intervals.begin(), intervals.end(), [](auto &a, auto &b){ return a.first < b.first; }); priority_queue<int, vector<int>, greater<int>> minHeap; minHeap.push(intervals[0].second); for(int i = 1; i < intervals.size(); i++) { if(intervals[i].first >= minHeap.top()) { minHeap.pop(); } minHeap.push(intervals[i].second); } return minHeap.size(); } int main() { vector<pair<int,int>> intervals = {{1, 5}, {6, 10}, {11, 15}}; cout << minMeetingRooms(intervals) << endl; return 0; }
Attempts:
2 left
💡 Hint
No meetings overlap, so only one room is needed.
✗ Incorrect
Since all meetings are sequential without overlap, only one room is needed.
🔧 Debug
advancedIdentify the error in meeting rooms calculation
What error will this code produce when run?
DSA C++
#include <iostream> #include <vector> #include <algorithm> #include <queue> using namespace std; int minMeetingRooms(vector<pair<int,int>>& intervals) { if(intervals.empty()) return 0; sort(intervals.begin(), intervals.end()); priority_queue<int, vector<int>, greater<int>> minHeap; minHeap.push(intervals[0].second); for(int i = 1; i < intervals.size(); i++) { if(intervals[i].first >= minHeap.top()) { minHeap.pop(); } minHeap.push(intervals[i].second); } return minHeap.size(); } int main() { vector<pair<int,int>> intervals = {{0, 30}, {5, 10}, {15, 20}}; cout << minMeetingRooms(intervals) << endl; return 0; }
Attempts:
2 left
💡 Hint
Check if sort call is valid for vector>.
✗ Incorrect
The default sort for pairs sorts by first element then second, so sort(intervals.begin(), intervals.end()) is valid. No error occurs and output is correct.
❓ Predict Output
advancedMinimum rooms required with overlapping intervals
What is the output of this code for intervals with multiple overlaps?
DSA C++
#include <iostream> #include <vector> #include <algorithm> #include <queue> using namespace std; int minMeetingRooms(vector<pair<int,int>>& intervals) { if(intervals.empty()) return 0; sort(intervals.begin(), intervals.end(), [](auto &a, auto &b){ return a.first < b.first; }); priority_queue<int, vector<int>, greater<int>> minHeap; minHeap.push(intervals[0].second); for(int i = 1; i < intervals.size(); i++) { if(intervals[i].first >= minHeap.top()) { minHeap.pop(); } minHeap.push(intervals[i].second); } return minHeap.size(); } int main() { vector<pair<int,int>> intervals = {{1, 10}, {2, 7}, {3, 19}, {8, 12}, {10, 20}, {11, 30}}; cout << minMeetingRooms(intervals) << endl; return 0; }
Attempts:
2 left
💡 Hint
Count the maximum number of overlapping meetings at any time.
✗ Incorrect
The maximum overlap is 4 meetings at once, so minimum rooms required is 4.
🧠 Conceptual
expertWhy use a min-heap in Meeting Rooms problem?
Why is a min-heap used to solve the Meeting Rooms problem efficiently?
Attempts:
2 left
💡 Hint
Think about how to reuse rooms as soon as possible.
✗ Incorrect
The min-heap keeps track of the earliest finishing meeting so we can free that room if the next meeting starts after it ends, minimizing rooms used.
