参考了标准的贪心解法。
其实是先假定minHeap保存n个房间的个数,而当一旦有一个会议的开始时间大于最早的结束时间(另一个会议的),即意味着这两个会议可以共用一个房间,于是房间个数可以减一。
/**
* Definition for an interval.
* public class Interval {
* int start;
* int end;
* Interval() { start = 0; end = 0; }
* Interval(int s, int e) { start = s; end = e; }
* }
*/
public class Solution {
public int minMeetingRooms(Interval[] intervals) {
if (intervals == null | intervals.length == 0) {
return 0;
}
Arrays.sort(intervals, new Comparator<Interval>(){
public int compare(Interval i1, Interval i2) {
return i1.start - i2.start;
}
});
PriorityQueue<Integer> queue = new PriorityQueue<>();
queue.offer(intervals[0].end);
for (int i = 1; i < intervals.length; i++) {
if (intervals[i].start >= queue.peek()) {
queue.poll();
}
queue.offer(intervals[i].end);
}
return queue.size();
}
}