ホームページ > ウェブフロントエンド > jsチュートリアル > LeetCode 瞑想: マージ インターバル

LeetCode 瞑想: マージ インターバル

Linda Hamilton
リリース: 2024-12-14 16:24:10
オリジナル
743 人が閲覧しました

LeetCode Meditations: Merge Intervals

マージ間隔の説明から始めましょう:

interval[i] = [start_i, end_i] の間隔の配列を指定すると、重複する間隔をすべてマージし、入力内のすべての間隔をカバーする重複しない間隔の配列を返します。

例:

Input: intervals = [[1, 3], [2, 6], [8, 10], [15, 18]]
Output: [[1, 6], [8, 10], [15, 18]]

Explanation: Since intervals [1, 3] and [2, 6] overlap, merge them into [1, 6].
ログイン後にコピー
ログイン後にコピー

または:

Input: intervals = [[1, 4], [4, 5]]
Output: [[1, 5]]

Explanation: Intervals [1, 4] and [4, 5] are considered overlapping. 
ログイン後にコピー
ログイン後にコピー

後で簡単に比較できるように、最初に間隔を並べ替えることから始めることができます。

intervals.sort((a, b) => a[0] - b[0]);
ログイン後にコピー
ログイン後にコピー

また、新しくソートされた間隔の最初の要素を最初に保持する結果配列を初期化することもできます。

let result = [intervals[0]];
ログイン後にコピー

最後にマージされた間隔の終了を追跡して、現在注目している間隔の開始と比較して、重複しているかどうかを確認する必要があります。

メモ 2 つの間隔が重なりない場合、一方の
Note
For two intervals not to overlap, the start of one should be strictly larger than the end of the other or the end of the one should be strictly smaller than the start of the other, as mentioned in our chapter introduction.
開始は終了よりも厳密に大きくする必要があります。もう一方 または 一方の 終わり は、厳密に小さくする必要があります。章の紹介で述べたように、もう 1 つの の開始。 テーブル>

それらが重なっていない場合は、その間隔を結果に追加するだけです。それ以外の場合は、「最後の端」を更新して、間隔を効果的にマージする必要があります:

Input: intervals = [[1, 3], [2, 6], [8, 10], [15, 18]]
Output: [[1, 6], [8, 10], [15, 18]]

Explanation: Since intervals [1, 3] and [2, 6] overlap, merge them into [1, 6].
ログイン後にコピー
ログイン後にコピー

そして、最後にやるべきことは結果を返すことだけです:

Input: intervals = [[1, 4], [4, 5]]
Output: [[1, 5]]

Explanation: Intervals [1, 4] and [4, 5] are considered overlapping. 
ログイン後にコピー
ログイン後にコピー

そして、TypeScript での最終的なソリューションは次のようになります。

intervals.sort((a, b) => a[0] - b[0]);
ログイン後にコピー
ログイン後にコピー

時間と空間の複雑さ

間隔を並べ替えています。組み込みの並べ替え関数には があります。 O(n log n)O(n log n) O(n log n) 時間の複雑さ。 (ループは O(n)O(n) O(n) ですが、全体的な時間計算量は次のようになります。 O(n log n)O(n log n) O(n log n) ).

入力配列間隔のサイズが増加すると、結果配列のサイズも増加する可能性があるため、次のようになります。 O(n)O(n) O(n) 空間の複雑さ。


次に、この章の最後の問題、重複しない間隔について見ていきます。それまで、コーディングを楽しんでください。

以上がLeetCode 瞑想: マージ インターバルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート