141. 环形链表

快慢指针即可
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;
}
}

浙公网安备 33010602011771号