LeetCode 253. 会议室 II
文章目录
题目描述
给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,返回 所需会议室的最小数量 。
示例 1:
输入:intervals = [[0,30],[5,10],[15,20]]
输出:2
会议室 II
提示:
1 <= intervals.length <= 104
0 <= starti < endi <= 106
一、解题关键词
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
class Solution {
public int minMeetingRooms(int[][] intervals) {
//优先队列实现会议室开始排序
int rowLen = intervals.length;
int colLen = intervals[0].length;
if(rowLen == 0){return 0;}
//队列2 结束时间排序 没有结束就新建一个会议室 最后堆容量就是会议室数量
PriorityQueue<Integer> allocator = new PriorityQueue<Integer>(rowLen,new Comparator<Integer>(){
public int compare (Integer a,Integer b){
return a - b;
}
});
Arrays.sort(intervals,new Comparator<int[]>(){
public int compare(final int [] a,final int [] b){
return a[0] - b[0];
}
});
allocator.add(intervals[0][1]);
for(int i = 1;i < intervals.length;i++){
if(intervals[i][0] >= allocator.peek()){
allocator.poll();
}
allocator.add(intervals[i][1]);
}
return allocator.size();
}
}
2.知识点
拆分问题很重要,会议开始时间和结束时间 是关键要素