图片转自力扣官方题解
//142. 环形链表 II
//使用快慢指针判断是否存在环路,如果不会,可以先做141题
//关于边界问题,可以用一个具体的例子处理
class Solution {
public:
ListNode* detectCycle(ListNode* head) {
if (head == NULL) return NULL;
ListNode* p = head;
ListNode* q = head->next;
while (q != NULL && p != q) {
q = q->next;
if (q == NULL) break;
p = p->next;
q = q->next;
}
if (q == NULL) return NULL;
p = p->next;
ListNode* t = head;
while (t != p) {
t = t->next;
p = p->next;
}
return t;
}
};