LeetCode142. 環形連結串列II
阿新 • • 發佈:2019-01-01
題目分析:本題是要找到一個環形連結串列的第一個入環節點,分析:設定快指標每次走兩步、慢指標每次走一步,當它們相遇時,表示該連結串列有環。然後再將slow指標指向頭結點,slow和fast同時向前走,下一個相遇的點即是入環節點。
證明:
程式碼展示:
class Solution { public: ListNode *detectCycle(ListNode *head) { if(head==NULL || head->next==NULL) return NULL; ListNode *slow = head; ListNode *fast = head; do{ if(fast->next!=NULL && fast->next->next!=NULL) fast = fast->next->next; else return NULL; slow = slow->next; }while(slow!=fast); slow = head; while(slow!=fast){ slow = slow->next; fast = fast->next; } return slow; } };