前書き
リングの検出は非常に一般的なアルゴリズムの問題であるはずです。リングの問題があるかどうかを判断する方法は?
非常に簡単な方法は、HashSetを使用して、トラバースするデータを保存することです。重複がある場合、リンクリストにリングがあることがわかります。ただし、このメソッドは、通過したすべての要素を保存する必要があるため、空間の複雑さはo(n)です。
以前の要素を保存せずにループがあるかどうかを判断する方法はありますか?
フロイトのウサギとカメのアルゴリズムを見てみましょう。
フロイトについて
一部のクラスメートは、知らないフロイト(ジークムントフロイト)、夢の分析の作者、有名な心理学者、および精神分析学校の創設者と言います。
しかし、ここで話しているフロイトのフルネームはロバートWです。ジグムントフロイトの代わりにフロイド(ロバートフロイト)。
Robert Freudは、コンピューターサイエンティストであり、チューリング賞を受賞し、アサーション前および後のメソッドの創設者であり、ヒープソートアルゴリズムとフロイドワーシャルアルゴリズムの創設者の1人です。
1978年にチューリング賞を受賞し、「独学のコンピュータサイエンティスト」です。
このウサギとカメのアルゴリズムは、彼が発明したリング検出アルゴリズムです。
リングを作る
に