LeetCode 56. 병합 간격

구간 모음이 주어지면 겹치는 구간을 모두 병합합니다.



예 1:
입력: 간격 = [[1,3],[2,6],[8,10],[15,18]]
출력: [[1,6],[8,10],[15,18]]
설명: 구간 [1,3]과 [2,6]이 겹치므로 [1,6]으로 병합합니다.
예 2:
입력: 간격 = [[1,4],[4,5]]
출력: [[1,5]]
설명: 간격 [1,4] 및 [4,5]가 겹치는 것으로 간주됩니다.
참고: 2019년 4월 15일에 입력 유형이 변경되었습니다. 새 메서드 서명을 얻으려면 기본 코드 정의로 재설정하십시오.

제약 조건:
간격[i][0] <= 간격[i][1]

var merge = function(intervals) {
    if(intervals.length <= 1) return intervals;
    // sort the array so earlier start times are at the beginning
    intervals = intervals.sort((a,b) => a[0] - b[0])
    let output = [intervals[0]];
    let current = output[0];
    // If the current interval's end time is greater than or equal 
    // to the next interval's start time, then we know there is an
    // overlap and we merge them.
    // If there is no overlap, then we add the next interval to the 
    // list of intervals in our output array and repeat the process
    // until we go through the entire list of intervals.
    for(let i = 1; i< intervals.length;i++) {
        const next = intervals[i]
        if(current[1] >= next[0]) {
            current[1] = Math.max(current[1], next[1]);
        } else {
            current = next;
            output.push(current);
        }
    }
    return output;
};

좋은 웹페이지 즐겨찾기