链表中环的检测
2020-11-17 本文已影响0人
我姓杨却不是你信仰
/**
* 链表中环的检测。
* 定义一个慢节点,一个快节点。快节点先走一步
* 后续慢节点走一步,快节点走两步。如果链表中有环存在,那么快,慢节点,总会在某一处相遇。
* 如果没有环,那么快节点会先null,退出while循环
* @param node
* @return
*/
public static Boolean hasNodeLoop(Node node){
if(null == node || node.next == null){
return false;
}
//定义慢节点
Node slow = node;
//定义快节点,先走一步
Node fast = node.next;
while (slow != null && fast != null){
if(slow == fast){
return true;
}
slow = slow.next;
fast = fast.next.next;
}
return false;
}