题解 | #链表中环的入口结点#

链表中环的入口结点

https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

2(x+m)=x+k(m+n)得x=(k-1)m+kn令k=1,可以得出相遇的时候指,针和原点同时出发会在入口点相遇

package main

type ListNode struct {
	Val  int
	Next *ListNode
}

func EntryNodeOfLoop(pHead *ListNode) *ListNode {
	if pHead == nil || pHead.Next == nil {
		return nil
	}
	low, fast := pHead, pHead
	for fast.Next != nil && fast.Next.Next != nil {
		low = low.Next
		fast = fast.Next.Next
		if low == fast {
			for pHead != low {
				pHead = pHead.Next
				low = low.Next
			}
			return low
		}
	}
	return nil
}


全部评论

相关推荐

点赞 评论 收藏
分享
10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务