[LeetCode] 57. Insert Interval

Chobby·2024년 9월 5일
1

LeetCode

목록 보기
93/194

이전 풀이와 동일한 개념으로 접근하되, 주요 포인트는 겹치지 않는 구간에 대해 추가하고 구간이 겹치는 부분에 대한 병합 구간을 추가할 수 있느냐 이다.

😎풀이

function insert(intervals: number[][], newInterval: number[]): number[][] {
    const result = [];
    let i = 0;
    const n = intervals.length;

    // 목표 구간과 겹치지 못하고 먼저 실행되는 구간 추가
    while (i < n && intervals[i][1] < newInterval[0]) {
        result.push(intervals[i]);
        i++;
    }

    // 새 구간과 겹치는 구간들을 병합
    while (i < n && intervals[i][0] <= newInterval[1]) {
        newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
        newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
        i++;
    }

    // 병합된 새 구간을 결과에 추가
    result.push(newInterval);

    // 목표 구간과 겹치지 못하고 이후에 실행되는 구간 추가
    while (i < n) {
        result.push(intervals[i]);
        i++;
    }

    return result;
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글