题解 | #判断链表中是否有环#
判断链表中是否有环
https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # # @param head ListNode类 # @return bool布尔型 # class Solution: def hasCycle(self , head: ListNode) -> bool: # 此题为判断链表中是否存在环,且环必须在尾节点,因为Node不存在双指向 # 解题思想双指针法,快慢指针法 if head == None: return False fast = head slow = head while fast != None and fast.next !=None: fast = fast.next.next slow = slow.next if fast == slow: return True return False
判断链表中是否有环,借助快慢指针法:
首先判断边界条件,如果head为空直接返回false
不为空,则定义两个指针一个快一个慢fast 和 slow ,两个指针起始位置都为head然后开始向前跑,如果链表中有环则fast和slow必然会在链表中的某处相遇
fast = head
slow = head
开始遍历链表移动两个指针
while fast !=None and fast.next!=None: #要形成环则必然links中至少存在两个node
fast = fast.next.next
slow = slow.next
if fast == slow:
return True
return False
完结