环形链表
快慢指針法
分別定義 fast 和 slow指針,從頭結點出發,fast指針每次移動兩個節點,slow指針每次移動一個節點,如果 fast 和 slow指針在途中相遇 ,說明這個鏈表有環。
class Solution { public:ListNode *detectCycle(ListNode *head) {ListNode* fast=head;ListNode* slow=head;while(fast!=nullptr&&fast->next!=nullptr){fast=fast->next->next;slow=slow->next;if(fast==slow) break;}if(fast==nullptr||fast->next==nullptr) return nullptr;ListNode* temp=head;while(temp!=slow){temp=temp->next;slow=slow->next;}return slow;} };總結