双指针技巧

判断是否成环

slow , fast := head, head
for fast != nil && fast.Next != nil{
    if fast == slow {
        return true
    }
    fast = fast.Next.Next
    slow = slow.Next
}
return false

获取环的起始位置

slow, fast := head, head
for fast != nil && fast.Next != nil{
	// 符合条件, fast slow 皆为环入口结点
	if fast == slow {
		break 
	}
	fast = fast.Next.Next
	slow = slow.Next
}
if fast == nil || fast.Next == nil {
	return nil
}
// fast 为新结点,与slow结点对比,获取具体slow的结点值
fast = head
for fast != slow {
	fast = fast.Next
	slow = slow.Next
}
return fast
posted @ 2023-12-04 16:18  cn_zt  阅读(15)  评论(0)    收藏  举报