跳转至

23.链表中环的入环点 (Easy)*

题目描述*

一个链表中包含环,请找出该链表的环的入口结点。要求不能使用额外的空间。

代码*

这个题也做过,可以通过数学证明,快慢指针的相遇点到入环点的距离与头结点到入环点的距离相等,即有以下。

class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        ListNode *fast = head, *slow = head;
        while(fast != nullptr && fast->next != nullptr) {
            fast = fast->next->next;
            slow = slow->next;
            if(fast == slow) {
                slow = head;
                while(slow != fast) {
                    slow = slow->next;
                    fast = fast->next;
                }
                return slow;
            }
        }
        return nullptr;
    }
};

最后更新: July 23, 2022