141.判断是否有环形列表 LeetCode java实现 算法之旅

141.判断是否有环形列表

方法1:破解法:执行一分钟,判断是否最后为空

方法2:存节点。用set集合来存储节点,判断是否有重复(时间复杂度:O(n))

方法3:快慢指针:定义两个指针,slow,fast,slow+1,fast+2。如果有环,fast和slow会相遇,即相等。

方法3代码:

public class Solution {

    public boolean hasCycle(ListNode head) {

        ListNode fast = head;

        ListNode slow = head;

        while(slow != null && fast != null && fast.next != null){//fast.next的判断:判断接下来是否还有数据

            slow = slow.next;

            fast = fast.next.next;

            if(slow==fast)

                return true;

        }

        return false;

    }

}

    原文作者:茜茜的龙叔
    原文地址: https://blog.csdn.net/qq_38765867/article/details/84108762
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞