简单
技术面试0 次浏览如何判断一个链表是否有环?请给出思路和代码实现。
算法工程师
链表算法
答题要点
判断一个链表是否有环可以使用快慢指针的方法。思路是:定义两个指针,一个快指针和一个慢指针。慢指针每次移动一步,快指针每次移动两步。如果链表中存在环,那么快指针最终会追上慢指针;如果链表中不存在环,快指针会先到达链表的末尾。以下是Python代码实现: python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def has_cycle(head): slow = head fast = head while fast and fast.next: slow = slow.next fast = fast.next.next if slow == fast: return True return False 在这段代码中,我们首先初始化慢指针和快指针都指向链表的头节点。然后在循环中,慢指针每次移动一步,快指针每次移动两步。如果快指针和慢指针相遇,说明链表中有环;如果快指针到达链表末尾,说明链表中没有环。