set
有重复的都可考虑set dict.key
class Solution:
def hasCycle(self, head: ListNode) -> bool:
s = set()
while head:
if head in s:
return True
s.add(head)
head = head.next
return False
快慢指针
class Solution:
def hasCycle(self, head: ListNode) -> bool:
slow = fast = head
while fast and fast.next: # 防止head为空和出现空指针的next的情况
slow = slow.next
fast = fast.next.next
if slow is fast:
return True
return False
常数辅助空间
标记法
修改node.val 但破坏了链表的值