森田賢二のleetCodeの使い方、解説、解答を毎日更新しているキャラクター

[leetcode]問題解答と解説。56. Merge Intervals [JavaScript]

[leetcode]問題解答と解説。56. Merge Intervals [JavaScript]

皆さんleetCode好きですよね。私も好きです。
なかなかやる機会がないのですよね。
leetCodeの使い方や解説ではなく実際に問題を解決するために何をしたか
をメモ書きして行きます

私はある決意をして今挑んでいます。
モチベーションを保つためだけにこれをやっています。

では今日のleetCode。
【56. Merge Intervals】の解決策と方法。自分がまず挑戦して
やったことをさらけ出します。

※下にある自分のコードは自分で設けた制限時間内に書けたところまです。

これは
「私は年末までこれを続けたらどんなleetCoderになるか」のシリーズ。
実験的ブログ更新です。

森田賢二のleetCode
森田賢二のleetCode

[leetcode] 56. Merge Intervals ルール

exampleは実際の問題ページを見てください

[leetcode] 56. Merge Intervals 問題ページ

704. Binary Search

[leetcode] 56. Merge Intervals

my code is not good

function merge(intervals) {
    let i = 0
    let result = []
  for (let j = 1; j < intervals.length; j++) {
      const [prevStart, prevEnd] = intervals[i]
      const [start, end] = intervals[j]
      console.log(start, end)

      if(prevEnd > start && prevEnd < end){
          if(!result[i]) {
              result.push([prevStart, end])
              continue;
          }
          const [rStart, rEnd] = result[i]
          console.log(rStart, rEnd)
          result.splice(i, 1, [rStart, end])
      } else {
          // result.push([start, end])
          // i++
      }
  }
    return result
};

時間切れ。シンプルな解決方法が知りたい

[leetcode] 56. Merge Intervals。discussの中の一つの解答例

数ある中からJavaScriptのもので、理解しやすい解説をピックアップしました。
discussから見ればさらにもっと違う方法で真似したくなるものがあるかもしれない

JavaScriptでfilterされている、discussはこちらから

気に入った解答1

var merge = function(intervals) {
    intervals.sort((a,b) => a[0] - b[0]);
    const results = [];
    for(let interval of intervals) {
        const prev = results.at(-1);
        if (!results.length || prev[1] < interval[0]) {
            results.push(interval);
        } else {
            prev[1] = Math.max(prev[1], interval[1])
        }
    }
    return results;
};

かしこだな...

  • result.at(-1)っていう書き方...
  • Math.max(a, b)。なるほど....condition使いがちでした
  • 確かにincreamentするindex入らないのか...
  • sortする必要があるのか..
    すごくシンプル

[leetcode] 56. Merge Intervals をやってみて感想

  • 悔しい

カテゴリー leetCode