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

链表中环的入口结点

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
        


全部评论

相关推荐

04-21 13:50
已编辑
北京理工大学 硬件测试
我们学校连夜发了声明,绝了绝了!看完了全部ppt,震碎三观。一般情况下我是站学生的,但这不是一般情况。这男的不能被取消学位吗?自己吃到了红利,靠着面试泄题得到的保研,又反手举报导师。这导师是《被举报系列》里最惨最恋爱脑的了,当然最可怜的是他的同妻……
牛客小黄鱼:看了ppt的聊天记录,真不知道谁才是受害者!有人为你剥过柚子吗?有人为你雪地里等你吗?有人为你写过情书吗?有人为你规划未来吗?有人为你小心翼翼吗?有人为你整页失眠失眠吗? 有人为你送上自己的科研成果吗?有人为你安排出国留学吗?有人愿意给你一个月2万吗?
点赞 评论 收藏
分享
03-29 14:19
门头沟学院 Java
你背过凌晨4点的八股文么:加油同学,人生的容错率很高,只是一个暑期罢了,后面还有很多机会!
点赞 评论 收藏
分享
用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务