链表中环的检测

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;
}
上一篇下一篇

猜你喜欢

热点阅读