【链表】NC3:链表中环的入口节点

发布于 2021-04-04 04:19

题目描述

对于一个给定的链表,返回环的入口节点,如果没有环,返回null

拓展:

你能给出不利用额外空间的解法么?

先判断链表是否有环,有环之后,再计算一下

借用一张图,可以简单画一画关系,得到a=c

因此fast=head先,fast从X到Y,slow从Z到Y,这样两者同速度走到Y正好是环的入口节点

public class Solution {    public ListNode detectCycle(ListNode head) {        if (head == null || head.next == null) {            return null;        }                ListNode fast = head;        ListNode slow = head;        while (fast != null) {            if (fast.next == null || fast.next.next == null) {                return null;            }            fast = fast.next.next;            slow = slow.next;            if (fast == slow) {                fast = head;                while ( fast != slow) {                    fast = fast.next;                    slow = slow.next;                }                return fast;            }        }        return null;    }}

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材