继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

判断一个链表是否为环形链表

慕用7504466
关注TA
已关注
手记 1
粉丝 0
获赞 1
方法一:哈希表
思路

我们可以通过检查一个结点此前是否被访问过来判断链表是否为环形链表。常用的方法是使用哈希表。

算法

我们遍历所有结点并在哈希表中存储每个结点的引用(或内存地址)。如果当前结点为空结点 null(即已检测到链表尾部的下一个结点),那么我们已经遍历完整个链表,并且该链表不是环形链表。如果当前结点的引用已经存在于哈希表中,那么返回 true(即该链表为环形链表)。
public boolean hasCycle(ListNode head) {
    Set<ListNode> nodesSeen = new HashSet<>();
    while (head != null) {——判断是否为空
        if (nodesSeen.contains(head)) {
            return true;——哈希表中已经含有要查看的节点
        } else {
            nodesSeen.add(head);——添加下一个节点
        }
        head = head.next;——指向下一个节点
    }
    return false;
}
有疑问的地方欢迎大家问我!
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP