📅  最后修改于: 2023-12-03 15:10:19.923000             🧑  作者: Mango
给定一个链表,判断链表中是否有环。
可以使用快慢指针,快指针每次向前移动两个节点,慢指针每次向前移动一个节点,当快指针追上慢指针时,就表示链表中有环。
具体实现可参考以下代码:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def hasCycle(head: ListNode) -> bool:
if not head or not head.next:
return False
slow = head
fast = head.next
while slow != fast:
if not fast or not fast.next:
return False
slow = slow.next
fast = fast.next.next
return True
以上代码中,首先判断链表头是否为空或者只有一个节点,如果是则直接返回 False。
然后设置两个指针,slow 指向头结点,fast 指向头结点的下一个节点。在循环中,如果 fast 或 fast.next 为空,表示链表没有环,返回 False;如果 fast 追上了 slow,表示链表中有环,返回 True;否则继续循环。