链表-环形链表II
题目链接
这道题感觉还是有点难,看了这篇题解觉得很清楚详细。其实代码很简单,理清楚逻辑很重要。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| struct ListNode *detectCycle(struct ListNode *head) { typedef struct ListNode ListNode; ListNode* fast = head; ListNode* slow = head; while(true){ if(fast == NULL || fast->next == NULL)return NULL; fast =fast->next->next; slow = slow->next; if(fast == slow)break; } fast = head; while(fast != slow){ fast = fast->next; slow = slow->next; }
return fast;
}
|