擅长:python、mysql、java
<p>一个好的算法如下,它很可能是最好的。不需要复制列表或类似的任何内容,<strong>可以在常量空间中完成。</p>
<p>取两个指针并将它们设置为列表的开头。</p>
<p>一次增加一个节点,另两个节点同时增加。</p>
<p>如果列表中的任何点上有循环,则它们必须指向某个点上的同一节点(不包括起点)。显然,如果到达列表的末尾,就没有循环。</p>
<p><strong>编辑</strong>:<br/>
您的代码,但稍加编辑:</p>
<pre><code>def is_circular(head):
slow = head
fast = head
while fast != None:
slow = slow.next
if fast.next != None:
fast = fast.next.next
else:
return False
if slow is fast:
return True
return False
</code></pre>