Leetcode 56. Merge Intervals—JavaScript


  • Merge Intervals - https://leetcode.com/problems/merge-intervals/
  • 1.問題の説明


    2 D配列からなるintervalsのオーバーラップ部分がマージされて返される問題.

    2.解答


    まず区間をソートします.ソートの基準はstartです.すなわち、各要素の0番インデックスに基づいてソートされます.JavaScriptが提供するsortメソッドはASCII文字列に基づいてソートされるため、数値をソートするにはcompareオプションを使用して数値をソートする必要があります.
    その後、最初期値(最初の区間)を加え、次の始点が自分より小さい場合は、もう一度終点を比較して候補区間をマージします.次の開始点が候補配列終了点より大きい場合は、新しいセグメントにプッシュして格納します.

    3.正解コード

    const merge = (intervals) => {
        intervals.sort((a, b) => {
            return a[0] - b[0]
        })
    
        const answer = [[...intervals[0]]];
        for (let i=1; i < intervals.length; i++) {
            const lastIdx = answer.length-1;
            
            if (answer[lastIdx][1] >= intervals[i][0]) {
                if (answer[lastIdx][1] < intervals[i][1]) {
                    answer[lastIdx][1] = intervals[i][1]
                }
            } else {
                answer.push([...intervals[i]])
            }
        }
        return answer;
    };