Given a linked list, return the node where the cycle begins. If there is no
cycle, return null
.
Follow up:
Can you solve it without using extra space?
老题,没难度。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 |
/** * 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 *fast,*slow; if (head == NULL||head->next==NULL||head->next->next==NULL) return
NULL; fast =head->next->next; slow =head->next; if (fast == NULL ||slow == NULL) return
NULL; while (fast!=slow) { if (fast == NULL ||slow == NULL) return
NULL; fast = fast->next; if (fast == NULL) return
NULL; fast = fast->next; slow = slow->next; } fast = head; while (fast!=slow) { fast=fast->next; slow=slow->next; } return
slow; } }; |
Linked List Cycle II,布布扣,bubuko.com
原文:http://www.cnblogs.com/pengyu2003/p/3625902.html