LeetCode142 环形链表II(返回链表入环的第一个节点)
1. 问题描述
2. 思路
快慢指针
一个指针从快慢指针相遇的节点,另一个指针从头节点出发,进行遍历,直到再次相遇,即为节点
3. 代码
func detectCycle(head *ListNode) *ListNode {
slow, fast := head, head
for fast != nil && fast.Next != nil {
slow = slow.Next
fast = fast.Next.Next
if slow == fast {
cur := head
for slow != cur {
slow = slow.Next
cur = cur.Next
}
return slow
}
}
return nil
}