給定一個鏈表,返回鏈表開始入環的第一個節點。 若是鏈表無環,則返回 null。ide
爲了表示給定鏈表中的環,咱們使用整數 pos 來表示鏈表尾鏈接到鏈表中的位置(索引從 0 開始)。 若是 pos 是 -1,則在該鏈表中沒有環。code
說明:不容許修改給定的鏈表。索引
代碼實現:it
/** * 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) { ListNode *low = head; ListNode *fast = head; ListNode *meet = NULL; while(fast) { fast = fast->next; low = low->next; if(!fast) return NULL; fast = fast->next; if(low == fast) { meet = fast; break; } } if(meet == NULL) return NULL; while(head && meet) //head和meet到達必定相同的步數會在環的起始點相遇 { if(head == meet) { return head; } head = head->next; meet = meet->next; } return NULL; } };