等待加载。。。

算法:寻找单向链表的入环节点 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;
    }

posted @ 2022-04-19 17:04  言小溪enncy  阅读(27)  评论(0编辑  收藏  举报