链表中环的入口结点
给定一个链表,若其中包含环,则输出环的入口节点。
若其中不包含环,则输出null。
给定如上所示的链表:
输入:[1, 2, 3, 4, 5, 6]
输出:2
注意,这里的2表示编号是2的节点,节点编号从0开始。所以编号是2的节点就是val等于3的节点。
则输出环的入口节点3.
快慢指针
时间复杂度O(n)
class Solution {
public ListNode entryNodeOfLoop(ListNode head) {
if(head == null){
return null;
}
ListNode fast = head;
ListNode slow = head;
while(fast.next.next != null && slow.next != null){
fast = fast.next.next;
slow = slow.next;
if(fast.val == slow.val){
fast = head;
while(fast.next != null && slow.next != null){
fast = fast.next;
slow = slow.next;
if(fast.val == slow.val){
return slow;
}
}
}
}
return null;
}
}