快慢指针判断单链表是否有环证明问题。1.判断单链表是否有环: 使用快慢指针fast和slow,fast每次走两步,slow每次走一步,如果有环,肯定会相遇,如果没有,则指针fast遇到NULL退出。追及相遇问题。 2.求有环单链表的环长 在环上相遇后,记录第一次相遇点为Pos,之后指针slow继续每次走1步,fast每次走2步。在下次相遇...
可以证明。假设无环的部分有x个节点,有环部分有y个节点。慢指针走t步与快指针相遇。那么慢指针在环中走的长度为t-x,快指针为2t-x(假设快指针每次走2)。再假设慢指针在环中走过k1圈,快指针为k2圈。并在环中第n个地方相遇。则慢指针在环中走的长度为k1*y+n,快指针为k2*y+n;可得t-x=...
利用快慢指针,如果相遇则证明有环 注意边界条件: 如果只有一个node. 1classSolution {2public:3boolhasCycle(ListNode *head) {4ListNode* slow =head;5ListNode* fast =head;6while(slow != NULL && fast != NULL && fast->next !=NULL) {7slow = slow->next;8fast = fast->next->next;9if(slow ...