📖 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 all meetings can happen without overlapping in the same room.
🎯 Goal: Build a program that calculates the minimum number of meeting rooms required given a list of meeting time intervals.
📋 What You'll Learn
Create an array of meeting intervals with exact start and end times
Create a variable to keep track of the number of rooms needed
Write logic to find the minimum number of meeting rooms required
Print the minimum number of meeting rooms needed
💡 Why This Matters
🌍 Real World
Scheduling meetings in offices or conference centers to avoid conflicts and ensure enough rooms are available.
💼 Career
This problem is common in software engineering roles involving scheduling, calendar apps, and resource allocation.
Progress0 / 4 steps
1
Create the meeting intervals array
Create an array called meetings with these exact intervals: [1, 4], [2, 5], [7, 9]
DSA Typescript
Hint
Use a constant array named meetings with tuples for each interval.
2
Create a variable to track rooms needed
Create a variable called roomsNeeded and set it to 0
DSA Typescript
Hint
Use let to create a variable that can change later.
3
Calculate minimum meeting rooms required
Write code to calculate the minimum number of meeting rooms needed using the meetings array and store the result in roomsNeeded
DSA Typescript
Hint
Sort start and end times separately. Use two pointers to compare them and count rooms.
4
Print the minimum number of meeting rooms needed
Write a console.log statement to print the value of roomsNeeded
DSA Typescript
Hint
Use console.log(roomsNeeded) to show the result.
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 duration of a single meeting
B. The minimum number of meeting rooms needed to hold all meetings without overlap
C. The total number of meetings scheduled
D. The earliest start time among all meetings
Solution
Step 1: Understand the problem goal
The problem asks for the minimum number of rooms needed so that no meetings overlap in the same room.
Step 2: Clarify what is NOT asked
It is not about meeting durations, counts, or earliest times, but about room allocation to avoid conflicts.
Final Answer:
The minimum number of meeting rooms needed to hold all meetings without overlap -> Option B
Quick Check:
Minimum rooms = no overlapping meetings [OK]
Hint: Count overlaps to find minimum rooms needed [OK]
Common Mistakes:
Confusing total meetings with rooms needed
Thinking about meeting length instead of overlaps
Ignoring overlapping intervals
2. Which TypeScript code snippet correctly sorts an array of meeting intervals by their start time?
easy
A. intervals.sort((a, b) => a[0] + b[0]);
B. intervals.sort((a, b) => b[1] - a[1]);
C. intervals.sort((a, b) => a[1] - b[0]);
D. intervals.sort((a, b) => a[0] - b[0]);
Solution
Step 1: Identify sorting by start time
We want to sort intervals by their start time, which is the first element in each interval array.
Step 2: Check the sorting function
The correct comparator subtracts start times: a[0] - b[0]. This sorts ascending by start time.
Final Answer:
intervals.sort((a, b) => a[0] - b[0]); -> Option D
Quick Check:
Sort by start time = a[0] - b[0] [OK]
Hint: Sort intervals by start time using a[0] - b[0] [OK]
Common Mistakes:
Sorting by end time instead of start time
Using addition instead of subtraction in comparator
Mixing start and end indices in comparator
3. Given the following TypeScript code, what is the output?
const intervals = [[0, 30], [5, 10], [15, 20]];
function minMeetingRooms(intervals: number[][]): number {
intervals.sort((a, b) => a[0] - b[0]);
const heap: number[] = [];
for (const interval of intervals) {
if (heap.length && heap[0] <= interval[0]) {
heap.shift();
}
heap.push(interval[1]);
heap.sort((a, b) => a - b);
}
return heap.length;
}
console.log(minMeetingRooms(intervals));
First interval: heap = [30]
Second interval starts at 5, heap[0]=30 > 5, so no removal, heap = [30,10], sorted to [10,30]
Third interval starts at 15, heap[0]=10 <= 15, remove 10, heap = [30], then add 20, heap = [20,30]
Final Answer:
2 -> Option A
Quick Check:
Max overlapping meetings = 2 rooms needed [OK]
Hint: Track earliest end time to reuse rooms [OK]
Common Mistakes:
Not sorting intervals before processing
Not removing ended meetings from heap
Assuming heap length equals total meetings
4. The following TypeScript code is intended to find the minimum number of meeting rooms needed. What is the bug?
function minMeetingRooms(intervals: number[][]): number {
intervals.sort((a, b) => a[1] - b[1]);
const heap: number[] = [];
for (const interval of intervals) {
if (heap.length && heap[0] <= interval[0]) {
heap.shift();
}
heap.push(interval[1]);
heap.sort((a, b) => a - b);
}
return heap.length;
}
medium
A. Intervals are sorted by end time instead of start time
B. Heap is not sorted after push
C. The condition to remove from heap is incorrect
D. The function returns the wrong value
Solution
Step 1: Check sorting criteria
The intervals are sorted by end time (a[1] - b[1]) but should be sorted by start time to process meetings in order.
Step 2: Understand impact of wrong sorting
Sorting by end time breaks the logic of checking overlaps because meetings are not processed in chronological start order.
Final Answer:
Intervals are sorted by end time instead of start time -> Option A
Quick Check:
Sort by start time, not end time [OK]
Hint: Always sort intervals by start time first [OK]
Common Mistakes:
Sorting by end time instead of start time
Not sorting heap after insertion
Incorrect condition to remove ended meetings
5. You have the following meeting intervals: [[1,4], [2,5], [7,9], [3,6], [10,11]]. What is the minimum number of meeting rooms required to schedule all meetings without overlap?
At time 1: room count = 1
At time 2: overlaps with [1,4], rooms = 2
At time 3: overlaps with [1,4] and [2,5], rooms = 3
At time 7: previous meetings ended, rooms = 1
At time 10: rooms = 1
Final Answer:
3 -> Option C
Quick Check:
Max overlaps = 3 rooms needed [OK]
Hint: Count max overlaps at any time for rooms needed [OK]
Common Mistakes:
Not sorting intervals before counting overlaps
Underestimating overlaps by ignoring simultaneous meetings
Assuming one room fits all meetings
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.