解法:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def hasCycle(self, head: Optional[ListNode]) -> bool:
p=q=head
if p==None:
return False
elif p.next==None:
return False
while q and q.next:#这个地方必须加q.next,否则会报错
p=p.next
q=q.next.next
if p==q:
return True
return False
改进解法:
class Solution:
def hasCycle(self, head: Optional[ListNode]) -> bool:
slow=fast=head
while fast and fast.next:
slow=slow.next
fast=fast.next.next
if slow==fast:
return True
return False