刷题-1-34.链表中环的入口结点
题目来源:acwing网站:https://www.acwing.com/problem/content/86/
给定一个链表,若其中包含环,则输出环的入口节点。
若其中不包含环,则输出null
。
样例
给定如上所示的链表:
[1, 2, 3, 4, 5, 6]
2
注意,这里的2表示编号是2的节点,节点编号从0开始。所以编号是2的节点就是val等于3的节点。
则输出环的入口节点3.
思路参考y总
题目用双指针,快慢指针,也就是一快一慢;
设定第一个指针first为慢,每次都走一步,设定第二个指针second为快,每次都走两步,如果second在走得过程中遇到null(每走一步就判断一次是否走到null),如果遇到null就直接返回null;
当first和second第一次相遇是,first回到head的位置,second在原地,之后的每一步都是每个指针都走一步,直到再次相遇是就是环的入口结点;
证明:
自己大概看了y总的证明(https://www.acwing.com/solution/content/741/)之后试着自己手写一下证明过程;