思路是可以将所有开启、结束的点进行排序,只要扫描到开始的点就累加,扫到结束的点就减除,这样就能找到所需的最多的同时的会议室了。思路参考: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;
};