1.判断单链表是否有环: 使用快慢指针fast和slow,fast每次走两步,slow每次走一步,如果有环,肯定会相遇,如果没有,则指针fast遇到NULL退出。追及相遇问题。 2.求有环单链表的环长 在环上相遇后,记录第一次相遇点为Pos,之后指针slow继续每次走1步,fast每次走2步。在下次相遇的时候fast比slow正好又多走了一圈,也...
可以证明。假设无环的部分有x个节点,有环部分有y个节点。慢指针走t步与快指针相遇。那么慢指针在环中走的长度为t-x,快指针为2t-x(假设快指针每次走2)。再假设慢指针在环中走过k1圈,快指针为k2圈。并在环中第n个地方相遇。则慢指针在环中走的长度为k1*y+n,快指针为k2*y+n;可得t-x=...