leetcode——142——Linked List Cycle II

来源:互联网 发布:js正则判断数字范围 编辑:程序博客网 时间:2024/06/06 03:54
Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull.

Note: Do not modify the linked list.

Follow up:
Can you solve it without using extra space?


/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: int numNode = 0; ListNode *detectCycle(ListNode *head) { if (!hasCycle(head)) return NULL; ListNode* pBegin = head; ListNode* pEnd = head; for (int i = 0; i < numNode; i++) pBegin = pBegin->next; while (pBegin != pEnd) { pBegin = pBegin->next; pEnd = pEnd->next; } return pBegin; } bool hasCycle(ListNode *head) { if (head == NULL || head->next == NULL) return false; ListNode* fast = head; ListNode* slow = head; while (fast != NULL) { fast = fast->next; if (fast != NULL) { fast = fast->next; slow = slow->next; numNode++; } if (fast == slow) return true; } return false; } };

0 0
原创粉丝点击