NC3 链表中环的入口结点

这篇博客探讨了一种在单链表中检测和找到环的入口节点的算法。通过使用快慢指针,当快指针首次遇到慢指针时,它们相遇于环内。然后,从头节点重新开始,用慢指针继续遍历,直到再次与快指针相遇,那个节点即为环的入口。这种方法确保了在链表无环时返回null。

NC3 链表中环的入口结点

描述
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。

输入描述:
输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台将这2个会组装成一个有环或者无环单链表
返回值描述:
返回链表的环的入口结点即可。而我们后台程序会打印这个节点

/*
 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 , fast = pHead.next ;
        while(slow != fast){
            if(fast == null || fast.next == null){
                return null ;
            }
            slow = slow.next ;
            fast = fast.next.next ;
        }
        slow = pHead ;
        while(slow != fast.next ){
            fast = fast.next ;
            slow = slow.next ;
        }
        return slow ;
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值