快慢指针即可
public class Solution { public boolean hasCycle(ListNode head) { if(head==null||head.next==null) return false; ListNode slow=head; ListNode quick=head.next; while(slow!=quick)//因为循环条件是慢不等于快,所以刚开始把快放在慢的后方一步,(如果有环,即使快慢初始时候在一个格子里也会相遇,但是为了满足循环条件,设置成了两者相邻) { if(quick==null||quick.next==null) return false;//这里记住,null的next会报错,只能判断快指针!!! slow=slow.next; quick=quick.next.next; } return true; } }
public class Solution {
public boolean hasCycle(ListNode head) {
if(head==null)return false;
ListNode slow=head;
ListNode quick=head;
boolean a=false;//是否有环
while(quick!=null&&quick.next!=null)//条件记住,因为null的next没有意义,所以只能这样写
{
quick=quick.next.next;
slow=slow.next;
if(slow==quick)//有环
{
a=true;
break;
}
}
return a;
}
}