人工智能AI面试题-2.1 判断⼀一个单链表中是否有环
2.1 判断⼀一个单链表中是否有环 这⾥也是⽤到两个指针。如果⼀一个链表中有环,也就是说⽤⼀一个指针去遍历,是永远⾛不到头的。因此,我们可以⽤两个指针去遍历,⼀一个指针⼀次⾛两步,⼀一个指针⼀次⾛⼀步,如果有环,两个指针肯定会在环中相遇。时间复杂度为O(n)。 让我们用更具专业性和幽默感的方式来描述这个问题和解决方案吧!🕵️♂️ ```python def has_circle(head): """ 判断⼀一个单链表中是否有环 :param head: 单链表的头节点 :return: 如果有环,返回True;否则返回False """ fast_pointer = head # 快指针每次前进两步 slow_pointer = head # 慢指针每次前进⼀步 while fast_pointer is not None and fast_pointer.next is not None: fast_pointer = fast_pointer.next.next # 快指针⼀一次⾛两步 slow_pointer = slow_pointer.next # 慢指针⼀一次⾛⼀步 if fast_pointer == slow_pointer: # 如果两指针相遇,存在环 return True return False ``` 这段代码是⽤Python编写的⽤于检测单链表中是否存在环的函数。我们⽤两个指针,⼀个快指针每次前进两步,⼀个慢指针每次前进⼀步,如果链表中存在环,这两个指针最终会相遇。这就好像是程序员中的"追逐游戏",快慢指针在链表中追逐,最终相遇!🏃♂️ 这个方法的时间复杂度是O(n),非常高效。希望这个解答能帮助你理解如何检测链表中是否存在环。如果有环,这个函数会告诉你真相,就像程序员中的"侦探"一样!🕵️♀️