链表算法之-链表找环

2018-10-09  本文已影响0人  旭仔_2e16

思想:快慢指针

public Node getEntryNode(Node root){
    if(root==null || root.next==null) return null;
    if(root=root.next) return root;//自环
    Node fast=root.next.next;
    Node slow=root.next;
    while(fast!=null && fast.next.next!=null){//如果链表无环的话肯定是快指针先到头
        if(fast==slow){
            fast=root;
            while(fast!=slow){
                fast=fast.next;
                slow=slow.next;
            }
            return fast;//相等的时候就是环的入口
        }else{
            fast=fast.next.next;
            slow=slow.next;
        }
     }    
    return null;
}
上一篇下一篇

猜你喜欢

热点阅读