このプログラムでは、ループが含まれている可能性のあるリンク リストを取得します。ループが存在するかどうか、そしてループのサイズはどれくらいかを調べなければなりません。コードを使用してループの長さを求める非常に有名な方法を使用し、その時間と空間の複雑さについて説明してみましょう。
この質問では、上で見たように、ループが含まれる場合と含まれない場合があるリンク リストが与えられます。ループが存在する場合はループの長さを見つける必要があり、そうでない場合はゼロを返さなければなりません。ループはありません。フロイドループ法を使用してループを見つけ、そのサイズを確認します。たとえば、リンクされたリスト -
が与えられたとします。 リーリー8 を含むノードから 4 を含むノードまでのサイクルがあります。これは、8 が 4 と接続されて、長さ 5 のサイクルを形成していることを意味します。これを検出する必要があります。
###方法###
###例###
上記のコードでは、完全なリンク リストを 1 回だけ走査し、ループ部分は最大 3 回走査するため、時間計算量は線形になります。したがって、上記のコードの時間計算量は線形、つまり O(N) です。ここで、N はリンク リストのサイズです。
このチュートリアルでは、JavaScript 言語で概念を実装することにより、リンク リスト内に存在するループの長さを見つける方法を学習しました。 Floyd のループ検索アルゴリズムを使用して、指定されたリンク リスト内のループを検索し、次に while ループを使用してループを反復処理し、その長さを見つけました。上記のコードの時間計算量は O(N)、空間計算量は O(1) です。
以上がリンクされたリスト内のループの長さを見つけるための JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。