给定一个链表,返回链表开始入环的第一个节点。 若是链表无环,则返回 null。 为了表示给定链表中的环,咱们使用整数 pos 来表示链表尾链接到链表中的位置(索引从 0 开始)。 若是 pos 是 -1,则在该链表中没有环。 说明:不容许修改给定的链表。node
示例1:算法
输入:head = [3,2,0,-4], pos = 1
输出:tail connects to node index 1
解释:链表中有一个环,其尾部链接到第二个节点。
复制代码
输入:head = [1,2], pos = 0
输出:tail connects to node index 0
解释:链表中有一个环,其尾部链接到第一个节点。
复制代码
输入:head = [1], pos = -1
输出:no cycle
解释:链表中没有环。
复制代码
func detectCycle(head *ListNode) *ListNode {
slow,fast:=head,head
for{
//自始至终快慢未相遇,直接跳出就好
if fast==nil||fast.Next==nil {
break;
}
slow, fast = slow.Next,fast.Next.Next
//相遇了就像刚刚说的那样咯
if slow==fast {
fast = head;
for{
if(slow==fast){
return slow
}
slow=slow.Next
fast=fast.Next
}
}
}
return nil
}
复制代码
算法梦想家,来跟我一块儿玩算法,玩音乐,聊聊文学创做,我们一块儿天马行空! spa