Problems
0435 - Non Overlapping Intervals
Easy
/**
 * https://leetcode.com/problems/non-overlapping-intervals/
 * Time O(N * logN) | Space O(1)
 * @param {number[][]} intervals
 * @return {number}
 */
var eraseOverlapIntervals = function (intervals) {
    intervals.sort(([aStart, aEnd], [bStart, bEnd]) =>
        aEnd !== bEnd ? aEnd - bEnd : aStart - bStart
    );

    return getGaps(intervals);
};

const getGaps = (intervals, gaps = 1) => {
    const prev = intervals.shift();

    for (const curr of intervals) {
        const [prevStart, prevEnd] = prev;
        const [currStart, currEnd] = curr;

        const hasGap = prevEnd <= currStart;
        if (!hasGap) continue;

        prev[1] = curr[1];
        gaps++;
    }

    return intervals.length + 1 - gaps;
};