https://leetcode-cn.com/problems/linked-list-cycle/
最开始想到的处理方式是整个数组,把链表元素一个一个放进去,直到有重复的,
class Solution:
def hasCycle(self, head: ListNode) -> bool:
tgt=[]
while head:
tgt.append(head.val)
head=head.next
if head and head.val in tgt:
return True
return False
结果,这链表本身就可以有重复元素,那这个方法就用不了了
然后换了一种思路,好比让俩人跑步,让跑的快的领先跑得慢的一整圈就可以了,如果跑道是一个圈的话
class Solution:
def hasCycle(self, head: ListNode) -> bool:
a,b=head,head
while b and b.next:
a=a.next
b=b.next.next
if b is a:
return True
return False
代码挺短,只不过效果貌似不大行。。