题解 | #判断链表中是否有环#
判断链表中是否有环
http://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
思路:快慢指针
1.设置两个指针,一个一次走一步,一个一次走两步。
1)如果有环,最终两个指针会相遇。
2)若有指针提前到达了链表末尾,即=null,则无环。
public boolean hasCycle(ListNode head) {
if(head==null){
return false;
}
ListNode p1=head;//慢指针
ListNode p2=head.next;//快指针
while(p1!=null && p2!=null){
if(p1==p2){
return true;
}
p1=p1.next;
if(p2.next==null){//需要判断一下,否则会空指针异常。
return false;
}
p2=p2.next.next;
}
return false;
}
查看9道真题和解析