算法笔记34:会议室 II

160 阅读1分钟

253. 会议室 II

思路是可以将所有开启、结束的点进行排序,只要扫描到开始的点就累加,扫到结束的点就减除,这样就能找到所需的最多的同时的会议室了。思路参考:labuladong.github.io/algo/3/27/1…

代码如下:

const minMeetingRooms = (intervals) => {
    const startPoints = [];
    const endPoints = [];
    for (const interval of intervals) {
        startPoints.push(interval[0]);
        endPoints.push(interval[1]);
    }
    startPoints.sort((a, b) => a - b);
    endPoints.sort((a, b) => a - b);
    
    let i = 0;
    let j = 0;
    let res = 0;
    let count = 0;
    while(i < startPoints.length && j < endPoints.length) {
        if (startPoints[i] < endPoints[j]) {
            count++;
            i++;
        } else {
            count--;
            j++;
        }
        res = Math.max(res, count);
    }

    return res;
};