JZ55 链表中环的入口结点
链表中环的入口结点
题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
思路:这题需要知道a = c,然后head和slow每次走一步,相遇的时候就是第一个入口交点,需要注意应该写head != slow -> next,如果写成head == slow,在两个元素组成的环中就会死循环
func EntryNodeOfLoop(pHead *ListNode) *ListNode{ if pHead == nil{ return nil } slow, fast := pHead, pHead for fast != nil && fast.Next != nil { slow = slow.Next fast = fast.Next.Next if slow == fast { break } } if fast == nil || fast.Next == nil { return nil } p := pHead for p != slow && slow != nil{ p = p.Next slow = slow.Next } return p }