思想:快慢指针
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;
}
网友评论