返回链表入环的第一个节点

思路:
先找到链表快慢指针相遇节点,(相遇节点参照链接)然后让其中一个指针从链表头开始,同时遍历,它两相遇即为入口节点。

public ListNode detectCycle(){
        ListNode fast=this.head;
        ListNode slow=this.head;
        while(fast!=null&&fast.next!=null){
            slow=slow.next;
            fast=fast.next.next;
            if(slow==fast){
                fast=this.head;
                while(fast!=slow){
                    fast=fast.next;
                    slow=slow.next;
                }
                return slow;
            }
        }
        return null;
    }
发布了67 篇原创文章 · 获赞 12 · 访问量 1517

猜你喜欢

转载自blog.csdn.net/qq_42174669/article/details/102876529