Linked List Cycle
Given a linked list, determine if it has a cycle in it.
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 /*解题思路: 13 有两个指针,一个每次移动一个节点,另一个每次移动两个节点 14 15 当两个指针相遇时,另一个指针肯定在圆环内,并且慢指针在圆环内没有转过一圈 16 快指针要判断开头的两个指针是否为空 17 18 所有的指针都要给空指针一个说法 19 */ 20 21 ListNode* fast = head; 22 ListNode* slow = head; 23 while(fast && fast->next){ 24 fast = fast->next->next; 25 slow = slow->next; 26 if(fast == slow){ 27 return true; 28 } 29 } 30 if(fast == NULL || fast->next == NULL) 31 return false; 32 } 33 };
posted on 2015-08-30 11:33 horizon.qiang 阅读(126) 评论(0) 编辑 收藏 举报