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

链表中环的入口结点

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

import java.util.*;
/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {

    public ListNode EntryNodeOfLoop(ListNode pHead) {
        //排除空链表,单链表
        if(pHead == null || pHead.next == null)
        return null;

        ListNode slow = pHead; //乌龟
        ListNode fast = pHead; //兔子

        //判断是否有环
        while (fast != null && fast.next != null){
            slow = slow.next; //乌龟一步
            fast = fast.next.next;  //兔子两步
            if(slow == fast)
            break;
        }

        //无环  
        if (fast == null || fast.next == null)
        return null;

        //相遇了,兔子一脚给乌龟踢回原点
        slow = pHead;
        while(slow != fast){
            slow = slow.next;
            fast = fast.next; //兔子掉以轻心
        }
        return slow;
    }
}

全部评论

相关推荐

01-30 22:03
门头沟学院 Java
用微笑面对困难:我滴妈,【俩月】【实习】【主管】仨debuff吃满了,独立设计开发的项目写了绝大占比的运营板块,你独立开发,那维护、问题复盘、日志更新、bug、策划书全是自己整的? 不建议写那么大,可以从小出发更容易
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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