找出链表中是否存在环

 /*
    解题思路:采用两个指针,一个指针每一次值移动一次,两位一个指针每一次移动两步。如果存在环,则他们必定会存在
    相遇的那一刻
    */
    public boolean hasCycle(ListNode head) {
        if(head==null){//注意考虑头结点为空的情况
            return false;
        }
        ListNode first=head;
        ListNode second=head;
        second=second.next;
        while(first!=null&&second!=null){
            if(first==second){
                return true;
            }else{
                first=first.next;
                second=second.next;
                if(second==null){//为了防止second指针移动两部会出现空指针
                    return false;
                }
                second=second.next;
            }
            
        }
        return false;
    }

猜你喜欢

转载自blog.csdn.net/zyilove34/article/details/73733869