LeetCode 《253. 会议室 II》javascript 实现

253. 会议室 II

题目

给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,返回 所需会议室的最小数量 。

示例 1:

输入:intervals = [[0,30],[5,10],[15,20]]
输出:2
示例 2:

输入:intervals = [[7,10],[2,4]]
输出:1

解题思路:

LeetCode 《253. 会议室 II》javascript 实现_第1张图片

 

 可以计算出每个时刻同步进行的会议,在总时间范围求出产生冲突时所需要会议室的最大值,即所需要会议室的最小值。

注意:在同一时间点出现结束会议和开始会议的情况,应先处理结束,后处理开始。

js代码实现

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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

你可能感兴趣的:(javascript,leetcode)