问题:
给定一个链表,判断链表中是否有环,并找到环形的入口位置Pos.
Leetcode #141:该题为简单版,只需要找是否有环
解答
思路(两边走)
将该问题可拆解为两个问题:
1.是否有环,
2.找到两尾部重叠链表的第一个重叠结点
如图(Fig.1)所示,对于问题一,我们可以使用快慢指针解决,快每次走2步,慢一次走一步,从头部同时出发,若相交(快追上慢,比慢多走一个环长),则有环。
之后我们可以在相遇在的F节点处剪开,得到两条尾部相交的链表(H → \to →P → \to →F and F_next_node → \to →P → \to