题解 | #判断链表中是否有环#
判断链表中是否有环
http://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
设置快慢指针,当快慢指针相遇时,说明链表中有环,一旦某个指针指向空,说明无环
- 如果先判断再位移,初始时fast和slow指向同一个节点,要单独讨论
if(fast->next->next && slow->next){ fast = fast->next->next; slow = slow->next; }else{ return false; }
- 改成先位移再判断,可以避免单独讨论
class Solution { public: bool hasCycle(ListNode *head) { if(head == nullptr) return false; ListNode* fast = head; ListNode* slow = head; /**** //如果先判断再位移,初始时fast和slow指向同一个节点,要单独讨论 if(fast->next->next && slow->next){ fast = fast->next->next; slow = slow->next; }else{ return false; } ****/ while(fast && slow ){ if(!fast->next) return false;//指针先位移再判断,可以避免单独讨论 fast = fast->next->next; slow = slow->next; if(fast == slow){ return true; } } return false; } };