题解 | #链表中环的入口结点#

链表中环的入口结点

https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

#  双指针法进行解题
1.使用快慢指针判断链表是否有环出现(有交点,则表示有环,没有交点则表示无环)
2.将交点固定,其中的一个指针置于头部。俩个指针一步一步走,直到有交点,该点即为共同的进入节点

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def EntryNodeOfLoop(self, pHead):
        # write code here
        # 判断链表是否有环,使用快慢指针的方式进行判断
        slow = self.ishuan(pHead)
        if slow==None:
            return None
        fast = pHead     
        while fast != slow:  # 第二次相关的循环判断节点
            # 链表不为空
            slow = slow.next
            if fast.next:
                fast = fast.next
            else:
                return None
        return slow
        
    def ishuan(self, pHead):
        fast = pHead
        slow = pHead
        if not pHead:
            return pHead
        while slow and fast:
            # 链表不为空
            slow = slow.next
            if fast.next:
                fast = fast.next.next
            else:
                return None

            if slow==fast: 
                return slow # 快慢指针第一次相遇,判断是否有环出现,这时需要固定slow进行遍历
        return None
        


全部评论

相关推荐

huo12138:校友,传奇耐面王
点赞 评论 收藏
分享
双尔:反手回一个很抱歉,经过慎重考虑,您与我的预期暂不匹配,感谢您的投递
点赞 评论 收藏
分享
程序员牛肉:可以说含金量不如王者荣耀省标。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务