算法:寻找单向链表的入环节点 java
public static Node getLoopNode(Node head){
if(head == null || head.next == null){
return null;
}
// 快慢指针,快指针一定会遇到慢指针
Node n1 = head.next;
Node n2 = head.next.next;
while(n2 != null && n2.next != null){
if(n1 == n2){
break;
}
n1 = n1.next;
n2 = n2.next.next;
}
// 将快指针重置到头节点,慢指针保留原地,2个指针同时走,一定会在入环节点相遇
n2 = head;
while(n1 != null && n2 != null){
if(n1 == n2){
break;
}
n1 = n1.next;
n2 = n2.next;
}
return n1;
}
本文来自博客园,作者:言小溪enncy,转载请注明原文链接:https://www.cnblogs.com/enncy/p/16166187.html