1 /**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * ListNode *next;
6 * ListNode(int x) : val(x), next(NULL) {}
7 * };
8 */
9 class Solution {
10 public:
11 ListNode *detectCycle(ListNode *head) {
12 // IMPORTANT: Please reset any member data you declared, as
13 // the same Solution instance will be reused for each test case.
14 ListNode * itr = head;
15 ListNode * last = NULL;
16 int n = 1;
17 while (true){
18 if (itr==NULL)
19 return NULL;
20 ListNode * tmp = itr;
21 for (int i=0; i<n; i++){
22 tmp = tmp->next;
23 if (tmp==NULL)
24 return NULL;
25 else if (tmp == itr){
26 ListNode * rlt = head;
27 while (true){
28 ListNode * rltItr = rlt;
29 for (int j=0; j<=i; j++){
30 rltItr = rltItr->next;
31 if (rltItr == rlt)
32 return rlt;
33 }
34 rlt = rlt->next;
35 }
36 }
37 }
38 n++;
39 itr = itr->next;
40 }
41 return NULL;
42 }
43 };