[leetcode]問題解答と解説。56. Merge Intervals [JavaScript]
皆さんleetCode好きですよね。私も好きです。
なかなかやる機会がないのですよね。
leetCodeの使い方や解説ではなく実際に問題を解決するために何をしたか
をメモ書きして行きます
私はある決意をして今挑んでいます。
モチベーションを保つためだけにこれをやっています。
では今日のleetCode。
【56. Merge Intervals】の解決策と方法。自分がまず挑戦して
やったことをさらけ出します。
※下にある自分のコードは自分で設けた制限時間内に書けたところまです。
これは
「私は年末までこれを続けたらどんなleetCoderになるか」のシリーズ。
実験的ブログ更新です。
[leetcode] 56. Merge Intervals ルール
exampleは実際の問題ページを見てください
[leetcode] 56. Merge Intervals 問題ページ
[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はこちらから
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 をやってみて感想
- 悔しい