55リング(パイソン)でリストエントリノード

タイトル説明

リング含む場合、エントリのリングノードリストを見つける前記リンクされたリストに、そうでなければ、NULLを出力します。

思考

長さL、2Lの遅い散歩はとても速くてしまった場合

エントリsの開始点からの長さが、長さdにリングを遅くすると仮定すると

次いでリットル= S + Dを

リングの長さが遅いMを行っていないと仮定し、速い歩行は、N×(M + D)+ D + S = 2Lの長さであります

得られたN、それはS = M満たさよう*(M + D)+ D + S = 2(S + D)=> S = M +(N-1)(M + D)M + dが環を中心とする円であります遅いと頭が一緒に行くので後、ミーティングポイントは、入力点であります

1  クラスソリューション:
 2      DEF EntryNodeOfLoop(自己、PHEAD):
 3          ライトコードここで
4          なら PHEAD == なし:
 5              リターンなし
 6          fastPointer = PHEAD
 7          slowPointer = PHEAD
 8          ながら fastPointer fastPointer.next:
 9              slowPointer = slowPointer.next
 10              fastPointer = fastPointer.next.next
 11              の場合 fastPointer == slowPointer:
 12                  休憩
13          なら fastPointer ==なし又は fastPointer.next == なし:
 14              リターンなし
 15          fastPointer = PHEAD
 16          ながら fastPointer =!slowPointer:
 17              fastPointer = fastPointer.next
 18              slowPointer = slowPointer.next
 19          戻り fastPointer

2019年12月31日夜09時17分13秒

おすすめ

転載: www.cnblogs.com/NPC-assange/p/12127747.html