题解 | #判断链表中是否有环#

判断链表中是否有环

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

完结

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务