253. 会议室 II
题目
给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,返回 所需会议室的最小数量 。
示例 1:
输入:intervals = [[0,30],[5,10],[15,20]]
输出:2
示例 2:输入:intervals = [[7,10],[2,4]]
输出:1
解题思路:
可以计算出每个时刻同步进行的会议,在总时间范围求出产生冲突时所需要会议室的最大值,即所需要会议室的最小值。
注意:在同一时间点出现结束会议和开始会议的情况,应先处理结束,后处理开始。
var minMeetingRooms = function(intervals) {
let nums = [];
//让开始会议使用1表示,结束会议使用-1表示
for(let [up,down] of intervals) {
nums.push([up,1]);
nums.push([down , -1]);
}
//对会议进行排序,先开始的会议先计算,同一时刻发生结束开始会议,先结束后开始
nums.sort((a,b)=> a[0] === b[0] ? a[1]-b[1] : a[0]-b[0]);
let result = 0;
let current = 0;
for(let[val, flag] of nums ){
current = current + flag;
result = Math.max(result,current);
}
return result;
};
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/meeting-rooms-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。