253 Meeting rooms II
https://leetcode.com/problems/meeting-rooms-ii/
用pq要注意,放进pq要按开始的顺序,所以array本身仍然需要sort。pq只需要放结束的时间,如果放interval也只应该按结束时间排序,如果按开始时间排序会导致一些开始很晚但结束很早的interval被开始早结束晚的interval堵住poll不出来。
class Solution {
public int minMeetingRooms(int[][] intervals) {
if (intervals == null || intervals.length == 0) {
return 0;
}
int res = 1;
int count = 1;
PriorityQueue<Integer> pq = new PriorityQueue<>();
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] i1, int[] i2) {
return i1[0] - i2[0];
}
});
pq.offer(intervals[0][1]);
for (int i = 1; i < intervals.length; i++) {
while (!pq.isEmpty() && intervals[i][0] >= pq.peek()) {
pq.poll();
count--;
}
pq.offer(intervals[i][1]);
count++;
res = Math.max(res, count);
}
return res;
}
}
重点是要知道当前时间有多少room可以被free掉,用pq解决
Last updated