给一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
说明:不应修改给定的链表。
补充:
你是否可以不用额外空间解决此题?
详见:https://leetcode.com/problems/linked-list-cycle-ii/description/
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *detectCycle(ListNode *head) { if(head==nullptr) { return nullptr; } ListNode *slow=head; ListNode *fast=head; while(fast&&fast->next) { slow=slow->next; fast=fast->next->next; if(slow==fast) { fast=head; while(slow!=fast) { slow=slow->next; fast=fast->next; } return slow; } } return nullptr; } };