题解 | #链表中环的入口结点#
链表中环的入口结点
https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
// 两种方法;一种O(n)空间复杂度;记录每个节点是否被遍历过 // 另外一种;快慢指针; 存在环的话快慢指针一定会在环中相遇;相遇之后从这个点和开始节点出发;一次一步一定会在入口处相遇 func EntryNodeOfLoop(pHead *ListNode) *ListNode { if pHead == nil || pHead.Next == nil { return nil //空节点或者单个节点不存在环 } slow, fast := pHead, pHead for fast != nil { slow = slow.Next fast = fast.Next.Next if slow == fast { //快慢指针相遇;说明存在环,下一步就是把环的入口节点找出来 fast = pHead for fast != slow { fast = fast.Next slow = slow.Next } //最终相遇的点就是入口节点 return fast } } return nil }