Bird
Raised Fist0
DSA C++programming~10 mins

Meeting Rooms Problem Minimum Rooms Required in DSA C++ - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to sort the intervals by their start time.

DSA C++
std::sort(intervals.begin(), intervals.end(), [](const Interval &a, const Interval &b) {
    return a.[1] < b.[1];
});
Drag options to blanks, or click blank then click option'
Alength
Bend
Cstart
Dindex
Attempts:
3 left
💡 Hint
Common Mistakes
Sorting by end time instead of start time.
Using an attribute that does not exist.
2fill in blank
medium

Complete the code to check if the current meeting overlaps with the earliest ending meeting.

DSA C++
if (intervals[i].start < minHeap.[1]()) {
    rooms++;
} else {
    minHeap.pop();
}
Drag options to blanks, or click blank then click option'
Amin
Bfront
Cpeek
Dtop
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'front()' which is for queues, not priority queues.
Using 'peek()' which is not a C++ priority_queue method.
3fill in blank
hard

Fix the error in the code to push the current meeting's end time into the min heap.

DSA C++
minHeap.[1](intervals[i].end);
Drag options to blanks, or click blank then click option'
Apush
Binsert
Cadd
Denqueue
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'insert' which is not a method of priority_queue.
Using 'enqueue' which is not a C++ priority_queue method.
4fill in blank
hard

Fill both blanks to create a min heap that stores meeting end times.

DSA C++
std::priority_queue<int, std::vector<int>, [1]> minHeap;

minHeap.push(intervals[0].[2]);
Drag options to blanks, or click blank then click option'
Astd::greater<int>
Bstd::less<int>
Cstart
Dend
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'std::less' which creates a max heap.
Pushing the 'start' time instead of 'end' time.
5fill in blank
hard

Fill all three blanks to complete the loop that processes all meetings and counts minimum rooms.

DSA C++
for (int i = 1; i < intervals.size(); i++) {
    if (intervals[i].[1] < minHeap.[2]()) {
        rooms++;
    } else {
        minHeap.[3]();
    }
    minHeap.push(intervals[i].end);
}
Drag options to blanks, or click blank then click option'
Astart
Btop
Cpop
Dend
Attempts:
3 left
💡 Hint
Common Mistakes
Comparing with 'end' instead of 'start'.
Using 'pop' incorrectly or missing it.

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

  1. 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.
  2. Step 2: Clarify what is being counted

    We count how many meetings happen at the same time to find the minimum rooms required.
  3. Final Answer:

    The minimum number of rooms needed so no meetings overlap -> Option C
  4. 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

  1. Step 1: Identify sorting by start time

    We want to sort intervals by their start time, which is stored in a.first.
  2. 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.
  3. Final Answer:

    std::sort(intervals.begin(), intervals.end(), [](auto &a, auto &b) { return a.first < b.first; }); -> Option B
  4. 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?
std::vector> intervals = {{0,30}, {5,10}, {15,20}};
std::vector<int> starts, ends;
for(auto &i : intervals) {
    starts.push_back(i.first);
    ends.push_back(i.second);
}
std::sort(starts.begin(), starts.end());
std::sort(ends.begin(), ends.end());
int rooms = 0, end_ptr = 0;
for(int i = 0; i < starts.size(); i++) {
    if(starts[i] < ends[end_ptr]) rooms++;
    else end_ptr++;
}
std::cout << rooms << std::endl;
medium
A. 2
B. 3
C. 1
D. 0

Solution

  1. Step 1: Sort start and end times

    Starts = [0,5,15], Ends = [10,20,30]
  2. Step 2: Iterate and count rooms

    i=0: 0<10 true rooms=1
    i=1: 5<10 true rooms=2
    i=2: 15<10 false end_ptr=1 rooms=2
  3. Final Answer:

    2 -> Option A
  4. Quick Check:

    Max overlapping meetings = 2 [OK]
Hint: Compare starts and ends with two pointers to count rooms [OK]
Common Mistakes:
  • Not sorting start and end arrays
  • Incrementing rooms incorrectly
  • Confusing when to move end pointer
4. The following code attempts to find the minimum number of meeting rooms needed but has a bug. What is the bug?
std::vector> intervals = {{1,5}, {2,6}, {8,10}};
std::sort(intervals.begin(), intervals.end());
int rooms = 1;
for(int i = 1; i < intervals.size(); i++) {
    if(intervals[i].first < intervals[i-1].second) rooms++;
}
std::cout << rooms << std::endl;
medium
A. The loop should start from i = 0, not i = 1
B. The intervals vector is not sorted correctly
C. The rooms variable should start at 0, not 1
D. It only compares each meeting with the previous one, missing overlaps with earlier meetings

Solution

  1. Step 1: Analyze overlap check logic

    The code only checks if current meeting starts before previous meeting ends, ignoring overlaps with other meetings.
  2. Step 2: Understand why this causes error

    This misses cases where a meeting overlaps with a meeting before the previous one, undercounting rooms needed.
  3. Final Answer:

    It only compares each meeting with the previous one, missing overlaps with earlier meetings -> Option D
  4. 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?
hard
A. 2
B. 4
C. 3
D. 1

Solution

  1. Step 1: Sort start and end times

    Starts = [0,5,10,15,20], Ends = [10,15,20,25,30]
  2. Step 2: Use two pointers to count rooms

    i=0: 0<10 rooms=1
    i=1: 5<10 rooms=2
    i=2: 10<10 false end_ptr=1 rooms=2
    i=3: 15<15 false end_ptr=2 rooms=2
    i=4: 20<20 false end_ptr=3 rooms=2
  3. Final Answer:

    2 -> Option A
  4. Quick Check:

    Max overlapping meetings = 2 [OK]
Hint: Track starts and ends with pointers to find max overlaps [OK]
Common Mistakes:
  • Counting all meetings as overlapping
  • Not moving end pointer correctly
  • Misreading intervals causing wrong overlaps
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard