Leetcode141| 環形連結串列
阿新 • • 發佈:2018-11-29
Leetcode141| 環形連結串列
- 題目描述
給定一個連結串列,判斷連結串列中是否有環 - 解題思路
利用快慢指標, p1= head, p2= head->next, p1為慢指標,p2為快指標, p1每次走一步, p2每次走2步,速率差為1, 經過次數為 兩者距離除以/ 兩者差速,幾乎等於環形的長度K。時間複雜度為O(n)。- 程式碼
* struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: bool hasCycle(ListNode *head) { ListNode* p1, *p2; if(!head){ return false; } if(!head->next){ return false; } p1 = head; p2 = head->next; while(p1 != p2){ if(p2 == NULL || p2->next ==NULL){ return false; } p1 = p1->next; p2 = p2->next->next; } return true; } };