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
| class Solution {
/*
[[0,30],[5,10],[15,20]]
[ 0,30]
[ 5,10] ----
[15,20]
(1, 10), (2, 7), (3, 19), (8, 12), (10, 20), (11, 30)
*/
public int minMeetingRooms(int[][] intervals) {
Arrays.sort(intervals, (a,b) -> a[0] - b[0]);
PriorityQueue<int[]> pq = new PriorityQueue<int[]>((a,b) -> {
return a[1] - b[1];
});
for (int[] interval: intervals) {
if (!pq.isEmpty() && pq.peek()[1] <= interval[0]) {
pq.poll();
}
pq.add(interval);
}
return pq.size();
}
}
|