链表中环的入口结点

public class Solution {

    public ListNode EntryNodeOfLoop(ListNode pHead) {
        //设置快慢指针
        //快指针一次走两步,慢指针一次走一步
        ListNode fastHead = pHead;
        ListNode lowHead = pHead;
        boolean flag=false;
        while (fastHead != null && fastHead.next != null) {
            lowHead=lowHead.next;
            fastHead=fastHead.next.next;
            if(fastHead==lowHead){
                //说明有环
                flag=true;
                 break;
            }
           
        }
        //无环情况
        if(!flag)
        return null;
        // 有环慢指针从头开始,相交点就是入口节点
        lowHead=pHead;
        while(fastHead!=lowHead){
            fastHead=fastHead.next;
            lowHead=lowHead.next;
        }
        return lowHead;
        
    }
}
全部评论

相关推荐

青春运维少年不会梦到...:实习大王
点赞 评论 收藏
分享
头像
10-27 15:50
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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