Lack of built-in Priority Queues in JavaScript makes it a bit hard to do problems like this. I end looking at the solution:
/**
* @param {number[][]} intervals
* @return {number}
*/
var minMeetingRooms = function(intervals) {
if (intervals.length < 1) return 0
const startTimes = []
const endTimes = []
for (let i = 0; i<intervals.length; i++) {
startTimes[i] = intervals[i][0]
endTimes[i] = intervals[i][1]
}
startTimes.sort((a, b) => a-b)
endTimes.sort((a, b) => a-b)
let startPtr = 0
let endPtr = 0
let rooms = 0
for (let i=0; i<intervals.length; i++) {
if (startTimes[i] >= endTimes[endPtr]) {
endPtr++
} else {
rooms++
}
}
return rooms
};