该题目来源于牛客网<剑指offer>专题. 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. Go语言实现: /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ //哈希表 func detectCycle(head *ListNode) *ListNode { //用map的key来判断是否已经存在 m := make
题目: Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Follow up: Can you solve it without using extra space? 题解: 这个连同I都是很经典的题啦,刷CC150时候就折磨了半天. 其实就推几个递推公式就好..首先看图(图引用自CC150): 从链表起始处到环入口长度为:a,从环入口到Faster和Sl
一.题目 一个链表中包含环,请找出该链表的环的入口结点. 二.思路 方法一: 假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程(蓝色路程,假设顺时针走), c为环的长度(蓝色+橙色路程). 定义一个快指针:Sslow=slow.next,一个慢指针:Sfast=fast.next 当快慢指针相遇的时候: 此时慢指针走的路程为Sslow = x + m * c + a : 快指针走的路程为Sfast = x + n * c + a,则有: 2 Sslow = Sfast 2