Challenge - 5 Problems
Meeting Rooms Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Minimum meeting rooms needed for given intervals
What is the output of the following code that calculates the minimum number of meeting rooms required?
DSA Python
def minMeetingRooms(intervals): starts = sorted([i[0] for i in intervals]) ends = sorted([i[1] for i in intervals]) s, e = 0, 0 rooms = 0 while s < len(intervals): if starts[s] < ends[e]: rooms += 1 s += 1 else: e += 1 s += 1 return rooms intervals = [[0, 30], [5, 10], [15, 20]] print(minMeetingRooms(intervals))
Attempts:
2 left
💡 Hint
Think about how many meetings overlap at the same time.
✗ Incorrect
The code sorts start and end times separately. It increments rooms when a meeting starts before the earliest ending meeting ends. Here, three meetings overlap at some point, so 3 rooms are needed.
❓ Predict Output
intermediate2:00remaining
Output for non-overlapping meetings
What is the output of this code for non-overlapping meeting intervals?
DSA Python
def minMeetingRooms(intervals): starts = sorted([i[0] for i in intervals]) ends = sorted([i[1] for i in intervals]) s, e = 0, 0 rooms = 0 while s < len(intervals): if starts[s] < ends[e]: rooms += 1 s += 1 else: e += 1 s += 1 return rooms intervals = [[1, 2], [3, 4], [5, 6]] print(minMeetingRooms(intervals))
Attempts:
2 left
💡 Hint
No meetings overlap here.
✗ Incorrect
Since no meetings overlap, only one room is needed at any time.
🔧 Debug
advanced2:00remaining
Identify the error in meeting rooms calculation
What error does this code raise when run?
DSA Python
def minMeetingRooms(intervals): starts = sorted([i[0] for i in intervals]) ends = sorted([i[1] for i in intervals]) s, e = 0, 0 rooms = 0 while s < len(intervals): if starts[s] <= ends[e]: rooms += 1 s += 1 else: e += 1 return rooms intervals = [[0, 30], [5, 10], [15, 20]] print(minMeetingRooms(intervals))
Attempts:
2 left
💡 Hint
Check the loop increments carefully.
✗ Incorrect
The code increments s only in the if branch but not in else, causing an infinite loop or IndexError when s exceeds length.
🧠 Conceptual
advanced1:30remaining
Why sorting start and end times separately helps?
Why do we sort start and end times separately when calculating minimum meeting rooms?
Attempts:
2 left
💡 Hint
Think about how to detect overlaps by comparing start and end times.
✗ Incorrect
Sorting start and end times separately allows us to iterate through meetings in order and count how many overlap at any time, which determines rooms needed.
❓ Predict Output
expert2:30remaining
Minimum rooms for complex overlapping intervals
What is the output of this code for complex overlapping intervals?
DSA Python
def minMeetingRooms(intervals): starts = sorted([i[0] for i in intervals]) ends = sorted([i[1] for i in intervals]) s, e = 0, 0 rooms = 0 max_rooms = 0 while s < len(intervals): if starts[s] < ends[e]: rooms += 1 max_rooms = max(max_rooms, rooms) s += 1 else: rooms -= 1 e += 1 return max_rooms intervals = [[1, 10], [2, 7], [3, 19], [8, 12], [10, 20], [11, 30]] print(minMeetingRooms(intervals))
Attempts:
2 left
💡 Hint
Count maximum overlaps at any time.
✗ Incorrect
The maximum number of overlapping meetings is 5 at some point, so 5 rooms are needed.