双指针技巧
判断是否成环
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
本文来自博客园,作者:cn_zt,转载请注明原文链接:https://www.cnblogs.com/cnzt/p/17875252.html

浙公网安备 33010602011771号