この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
100. linked listにcircleあるかのチェック
function hasCircle(head: Node): boolean { let fast: Node = head let slow: Node = head while (fast && fast.next) { fast = fast.next.next slow = slow.next if (fast === slow) { return true } } return false}
この関数では、スローポインタとファストポインタを使ってリストをトラバースします。ファストポインタは2つのノードを移動し、スローポインタは1つだけ動きます。もしファストポインタがリストの末尾に達した場合、もしくはファストポインタがスローポインタを追いついた場合、circleが存在すると言えます。
この関数の時間複雑度はO(n)で、空間複雑度はO(1)です。
空間複雑度がO(1)の解決方法としては、フラグを立てて、リスト内の各ノードを訪問するたびにそれを訪問済みとしてマークする方法があります。しかし、この方法ではリストの長さによっては、大量のメモリが必要になりうるため、あまり効率的ではありません。