-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathProblem_5_MinimumMeetingRooms.java
37 lines (32 loc) · 1.09 KB
/
Problem_5_MinimumMeetingRooms.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package Merge_Intervals;
// Problem Statement: Minimum Meeting Rooms (hard)
// LeetCode Question: 253. Meeting Rooms 11
import java.util.Collections;
import java.util.List;
import java.util.PriorityQueue;
public class Problem_5_MinimumMeetingRooms {
class Meeting {
int start;
int end;
public Meeting (int start, int end) {
this.start = start;
this.end = end;
}
}
public int findMinimumMeetingRooms(List<Meeting> meetings){
if (meetings == null || meetings.size() == 0) {
return 0;
}
Collections.sort(meetings, (a,b) -> Integer.compare(a.start, b.start));
int minRooms = 0;
PriorityQueue<Meeting> minHeap = new PriorityQueue<>(meetings.size(), (a,b) -> Integer.compare(a.end, b.end));
for(Meeting meeting : meetings){
while(!minHeap.isEmpty() && meeting.start >= minHeap.peek().end){
minHeap.poll();
}
minHeap.offer(meeting);
minRooms = Math.max(minRooms, minHeap.size());
}
return minRooms;
}
}