判断一个链表中是否有环

题目描述

判断一个链表中是否有环

思路:

  • 首先判断头结点是否为空
    • 若是,代表链表不存在,返回false
    • 若不是,继续下一步判断
  • 定义一个快指针(走两步)
  • 定义一个慢指针(走1步)
  • 一开始都是指向头结点的
  • 循环条件(快指针不为空,快指针的下一个不为空)
    • 快指针不为空 契合偶数结点个数
    • 快指针的下一个不为空 契合奇数结点个数
  • 如果快指针追上慢指针,代表有环,同时指向同一个结点

图片

代码实现

public class Solution {
    public boolean hasCycle(ListNode head) {
       if(head == null) return false;//如果头结点为空,就不存在这个链表
        
        ListNode fast = head;
        ListNode slow = head;
        
        while(fast != null && fast.next!= null){
            fast = fast.next.next;
            slow = slow.next;
            if(fast == slow){
                return true;
            }
           
           
        }
        return false;
    }
}
posted @ 2020-09-17 21:38  ASini  阅读(198)  评论(0编辑  收藏  举报