📅  最后修改于: 2023-12-03 15:10:19.914000             🧑  作者: Mango
链表是一种数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。问题11是关于链表的一道经典问题,其题目为:
给定一个单链表,判断其中是否有环。
问题的本质是判断一个链表是否存在环,解决这个问题可以使用两个指针,一个快指针和一个慢指针。快指针每次向前移动两个节点,慢指针每次向前移动一个节点。如果链表中存在环,那么快指针最终一定会追上慢指针。
具体的实现可以参考以下代码:
def hasCycle(head):
"""
:type head: ListNode
:rtype: bool
"""
if not head or not head.next:
return False
slow = head
fast = head.next
while fast and fast.next:
if slow == fast:
return True
slow = slow.next
fast = fast.next.next
return False
此方法时间复杂度为 O(n),其中 n 为链表长度。空间复杂度为 O(1),只用了两个指针。
问题11是关于链表的一道经典问题,其本质是判断一个链表是否存在环。使用快慢指针可以高效地解决此问题。