リンクリストにループがあり、ソリューション(Floydのサイクル検出アルゴリズム)が2つのポインタを持つことが1つの方法で、彼らが再び出会うかどうか確認してください。リンクされたリストループ検出アルゴリズム
私の質問は、1つのポインタを固定しておき、毎回他のポインタを1ステップずつ進めるのはなぜですか?
リンクリストにループがあり、ソリューション(Floydのサイクル検出アルゴリズム)が2つのポインタを持つことが1つの方法で、彼らが再び出会うかどうか確認してください。リンクされたリストループ検出アルゴリズム
私の質問は、1つのポインタを固定しておき、毎回他のポインタを1ステップずつ進めるのはなぜですか?
最初の(移動しない)ポインタがループ内にないため、ポインタが決して満たされない可能性があるためです。 (ループはリストの一部のみで構成されることに注意してください)
これで解決します。ありがとう、私は1つの正解をマークすることができるので、私は最も早いものをマークします。 –
ループには、最初のポインタが指す要素が含まれていない可能性があるためです。
たとえば、最初のポインタが要素1を指し、リンクされたリストが後でループ(1-> 2-> 3-> 4-> 2)を持つ場合、アルゴリズムはそれを検出しません。
ちょうどいくつかのマイナーなタイプミスが削除されたので、良い良心を持って週に50+を与えることができます(数秒で受け入れられなかったので)。 – DaveFar
@DaveBall Wow。ありがとう。私はあなたが気づいてうれしいです。 ;) – quasiverse
誰かが好奇心が強い場合は、アルゴリズムの修正が幾分速くなります。http://www.siafoo.net/algorithm/11 – Dave