-
-
Notifications
You must be signed in to change notification settings - Fork 155
/
Copy pathmeetingRooms2.js
34 lines (28 loc) · 946 Bytes
/
meetingRooms2.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//Two pointer TC: O(n logn + n) SC: O(n)
function minMeetingRooms1(intervals) {
let startTimes = Array(intervals.length);
let endTimes = Array(intervals.length);
for(let [start, end] of intervals) {
startTimes.push(start);
endTimes.push(end);
}
startTimes.sort((a, b) => a-b);
endTimes.sort((a, b) => a-b);
let startTimeIndex = endTimeIndex = 0;
let minMeetingRooms = count = 0;
while(startTimeIndex < intervals.length) {
let startTime = startTimes[startTimeIndex];
let endTime = endTimes[endTimeIndex];
if(startTime < endTime) {
startTimeIndex++;
count++;
} else {
endTimeIndex++;
count--;
}
minMeetingRooms = Math.max(minMeetingRooms, count);
}
return minMeetingRooms;
}
let intervals = [[2, 7], [3, 5], [3, 9], [5, 12], [8, 15], [9, 14]];
console.log(minMeetingRooms1(intervals));