📖 Scenario: You are organizing meetings in a company. Each meeting has a start time and an end time. You want to find out the minimum number of meeting rooms needed so that no meetings overlap in the same room.
🎯 Goal: Build a program that takes a list of meeting time intervals and calculates the minimum number of meeting rooms required to hold all meetings without conflicts.
📋 What You'll Learn
Create a vector of pairs called meetings with given start and end times
Create a vector called endTimes to track meeting end times
Use a loop to process each meeting and determine room allocation
Print the minimum number of meeting rooms required
💡 Why This Matters
🌍 Real World
Scheduling meetings in offices or conference centers to avoid double-booking rooms.
💼 Career
Useful for software engineers working on calendar apps, booking systems, or resource management tools.
Progress0 / 4 steps
1
Create the meetings data
Create a vector of pairs called meetings with these exact intervals: {0, 30}, {5, 10}, {15, 20}
DSA C++
Hint
Use std::vector> and initialize it with the given intervals.
2
Sort meetings by start time
Add code to sort the meetings vector by the start time of each meeting using std::sort and a lambda function.
DSA C++
Hint
Use std::sort with a lambda that compares the first element of each pair.
3
Calculate minimum meeting rooms
Create a vector of integers called endTimes. Add the end time of the first meeting to endTimes. Then, use a for loop with variable i from 1 to meetings.size() to check if the current meeting's start time is greater or equal to the earliest end time in endTimes. If yes, replace that end time; otherwise, add the current meeting's end time to endTimes. Use std::sort to keep endTimes sorted after each insertion or replacement.
DSA C++
Hint
Track end times in a vector and update or add end times based on meeting start times.
4
Print the minimum number of meeting rooms
Print the size of the endTimes vector using std::cout to show the minimum number of meeting rooms required.
DSA C++
Hint
The size of endTimes is the minimum number of rooms needed.
Practice
(1/5)
1. What does the "Meeting Rooms Problem Minimum Rooms Required" ask you to find given a list of meeting time intervals?
easy
A. The maximum length of a single meeting
B. The total number of meetings scheduled
C. The minimum number of rooms needed so no meetings overlap
D. The earliest meeting start time
Solution
Step 1: Understand the problem goal
The problem asks for the minimum number of rooms needed so that no two meetings overlap in the same room.
Step 2: Clarify what is being counted
We count how many meetings happen at the same time to find the minimum rooms required.
Final Answer:
The minimum number of rooms needed so no meetings overlap -> Option C
Quick Check:
Minimum rooms = max overlapping meetings [OK]
Hint: Count max overlapping meetings to find minimum rooms [OK]
Common Mistakes:
Confusing total meetings with rooms needed
Thinking earliest start time is the answer
Ignoring overlapping intervals
2. Which of the following C++ code snippets correctly sorts a vector of meeting intervals by their start time? Assume intervals is a vector of pairs where first is start and second is end time.
easy
A. std::sort(intervals.begin(), intervals.end(), [](auto &a, auto &b) { return a.first > b.first; });
B. std::sort(intervals.begin(), intervals.end(), [](auto &a, auto &b) { return a.first < b.first; });
C. std::sort(intervals.rbegin(), intervals.rend());
D. std::sort(intervals.begin(), intervals.end(), [](auto &a, auto &b) { return a.second < b.second; });
Solution
Step 1: Identify sorting by start time
We want to sort intervals by their start time, which is stored in a.first.
Step 2: Check lambda comparator correctness
std::sort(intervals.begin(), intervals.end(), [](auto &a, auto &b) { return a.first < b.first; }); uses a lambda comparing a.first < b.first, which sorts ascending by start time correctly.
Final Answer:
std::sort(intervals.begin(), intervals.end(), [](auto &a, auto &b) { return a.first < b.first; }); -> Option B
Quick Check:
Sort by start time ascending [OK]
Hint: Sort intervals by start time using lambda with a.first < b.first [OK]
Common Mistakes:
Sorting by end time instead of start time
Using default sort without comparator (may sort by first but not guaranteed)
Sorting descending when ascending is needed
3. What is the output of the following C++ code snippet that calculates the minimum number of meeting rooms required?
D. It only compares each meeting with the previous one, missing overlaps with earlier meetings
Solution
Step 1: Analyze overlap check logic
The code only checks if current meeting starts before previous meeting ends, ignoring overlaps with other meetings.
Step 2: Understand why this causes error
This misses cases where a meeting overlaps with a meeting before the previous one, undercounting rooms needed.
Final Answer:
It only compares each meeting with the previous one, missing overlaps with earlier meetings -> Option D
Quick Check:
Check all overlaps, not just adjacent meetings [OK]
Hint: Check overlaps with all active meetings, not just previous [OK]
Common Mistakes:
Assuming sorting fixes all overlap checks
Starting loop at wrong index
Incorrect initial rooms count
5. Given the following meeting intervals: {{0, 10}, {5, 15}, {10, 20}, {15, 25}, {20, 30}}, what is the minimum number of meeting rooms required to schedule all meetings without overlap?