摘要: 弗洛伊德算法,快慢指针可解 假设headA与headB相交,且分别长a+c,b+c(c为相交长度) 那么必然存在a+c+b+c=b+c+a+c(即当我们遍历完headA后再遍历headB与 先遍历headB再遍历headA,最终一定会在同一节点处相遇) 然后我们发现,即使不相交,依然存在a+b=b+ 阅读全文
posted @ 2021-04-07 16:35 jchen104 阅读(35) 评论(0) 推荐(0)
摘要: 快慢指针,也叫佛洛依德算法 即使用一个快指针,每次前进2位,慢指针每次前进1位,如果存在环, 则快慢指针必然会在环的开始处相交(可以参考追及问题) 时间O(n),空间O(1) public boolean hasCycle(ListNode head) { // 首先确保后续节点存在 if (hea 阅读全文
posted @ 2021-04-07 11:51 jchen104 阅读(40) 评论(0) 推荐(0)