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;
    }
}

  

原文地址:https://www.cnblogs.com/lzh1043060917/p/12843523.html