Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
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 bool hasCycle(ListNode *head) { 12 if(!head) return false; 13 ListNode* fast = head; 14 ListNode* slow = head; 15 while(fast -> next != NULL && fast -> next ->next != NULL){ 16 fast = fast -> next -> next; 17 slow = slow -> next; 18 if(fast == slow){ 19 return true; 20 } 21 } 22 return false; 23 } 24 };
原文:http://www.cnblogs.com/93scarlett/p/6373223.html