1
var minTaps = function (n, ranges) {3
for (let i = 0; i < ranges.length; i++) {6
intervals.push([l, r]);9
intervals.sort((a, b) => {10
if (a[0] === b[0]) return b[1] - a[1];14
// Find the starting idx16
for (let i = 0; i < intervals.length; i++) {17
let [s, e] = intervals[i];19
if (startIdx === undefined) startIdx = i;20
else if (intervals[startIdx][1] < e) startIdx = i;23
if (startIdx === undefined) return -1;31
let [start, end] = intervals[idx];32
if (end >= n) return openedTaps;33
for (let i = idx + 1; i < intervals.length; i++) {34
let [nextStart, nextEnd] = intervals[i];35
// If next interval's start is less than the current interval's end36
if (nextStart <= end) {37
if (!max && nextEnd > end) max = { i, end: nextEnd };38
// If the next interval's end is greater than the current interval's end39
else if (max && nextEnd > max.end) max = { i, end: nextEnd };