253. Meeting Rooms II (Approach 2)
Intution
Complexity
Space Complexity
Time Complexity
Code
public int minMeetingRooms(int[][] meetingIntervals) {
// Sort the meetings by start time
Arrays.sort(meetingIntervals, (a, b) -> Integer.compare(a[0], b[0]));
// Min-heap to track end times of ongoing meetings
PriorityQueue<Integer> ongoingMeetingsEndTimes = new PriorityQueue<>();
int maxRoomsRequired = 0;
for (int i = 0; i < meetingIntervals.length; ++i) {
int currentStart = meetingIntervals[i][0];
int currentEnd = meetingIntervals[i][1];
// Free up rooms that have ended before the current meeting starts
while (!ongoingMeetingsEndTimes.isEmpty() && ongoingMeetingsEndTimes.peek() <= currentStart) {
ongoingMeetingsEndTimes.poll(); // Room becomes available
}
// Allocate room for the current meeting
ongoingMeetingsEndTimes.add(currentEnd);
// Track the max number of rooms used simultaneously
maxRoomsRequired = Math.max(maxRoomsRequired, ongoingMeetingsEndTimes.size());
}
return maxRoomsRequired;
}
Last updated