How to detect whether any intervals overlap in a list of start and end times with TypeScript

1 Answer

0 votes
function hasOverlap(intervals: [number, number][]): boolean {
    if (intervals.length === 0) {
        return true;
    }

    // Sorting is essential because once intervals are ordered by 
    // start time, any overlap can only occur between adjacent intervals.
    intervals.sort((a, b) => a[0] - b[0]);
    // (5,9), (11,12), (15,17)

    // (5,9) and (11,12) → 11 < 9? No
    // (11,12) and (15,17) → 15 < 12? No

    // The loop compares each interval with the one before it.
    for (let i: number = 1; i < intervals.length; i++) {
        if (intervals[i][0] < intervals[i - 1][1]) {
            return false; // Overlap found
        }
    }

    return true; // No overlap
}

function main(): void {
    const intervals: [number, number][] = [
        [11, 12],
        [5, 9],
        [15, 17]
    ];

    if (hasOverlap(intervals))
        console.log("There are NO overlapping intervals");
    else
        console.log("There ARE overlapping intervals");
}

main();



/*
run:

There are NO overlapping intervals

*/

 



answered Apr 8 by avibootz

Related questions

...