Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...]
(si < ei), find the minimum number of conference rooms required.
Example 1:
Input: [[0, 30],[5, 10],[15, 20]]
Output: 2
Example 2:
Input: [[7,10],[2,4]] Output: 1
首先要排序。和昨天的题目有点像,类似于数组找interval的问题。
排好序之后,要意识到,接下来要根据前一个会议的结束时间,查找是不是有可用的会议室。
进一步熟悉priorityqueue
class Solution {
public int minMeetingRooms(int[][] intervals) {
if (intervals.length < 2) return intervals.length;
Arrays.sort(intervals, (p1, p2) -> p1[0] - p2[0]);
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int[] interval: intervals){
if (pq.size() > 0 && interval[0] >= pq.peek()){
pq.poll();
}
pq.add(interval[1]);
}
return pq.size();
}
}