0

だから私の質問は、循環リンクリストを検出するための亀とウサギ/相続人のアルゴリズムで、2番目に高速なポインターを2だけインクリメントする必要があるのはなぜですか?? 私はそれを理解することができず、ここでそれに対する答えも見つけられませんでした。

最初の遅いポインターを 1 ずつ増やすことは理にかなっているので、2 番目のポインターと比較するすべての要素を反復処理しますが、より高速なポインターを 2 だけ増やす必要があるのはなぜですか。 ????

そして、ノーであるべきものを計算する方法はありますか。リスト内の要素の数に関連して、より高速なポインターのホップ数 (2 でない場合) ???

4

2 に答える 2

0

ステップ サイズとして 3 または 4 を使用する場合は、3 ずつ進めると最初または 2 番目のノードが null になる可能性があるため、すべての特殊なケースのチェックを追加する必要があります。

また、サイクルの場合、遅い位置と速い位置が一致する 3 つの位置のいずれかの可能性があります。

コードが増え、処理する条件が増え、エラーが発生しやすくなり、Big O の観点からパフォーマンスを向上させずに 2 つ以上を使用するのはエレガントではないように見えます。

于 2012-06-18T07:20:07.427 に答える