前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《链表篇》---环形链表

《链表篇》---环形链表

作者头像
用户11288958
发布2025-05-31 14:52:30
发布2025-05-31 14:52:30
6000
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

题目传送门

方法一:哈希表

代码语言:javascript
代码运行次数:0
运行
复制
public class Solution {
    public boolean hasCycle(ListNode head) {
        Set<ListNode> visited = new HashSet<ListNode>();

        while(head != null){
            visited.add(head);
            head = head.next;
            if(visited.contains(head)){
                return true;
            }
        }
        return false;
    }
}

方法二:快慢指针

1.如果没有节点或只有一个节点,返回false。 2.定义一个快指针,一个慢指针。在快指针不等于慢指针的情况下,慢指针走一步,快指针走两步。 3.若快指针走到了最后一个节点,或者最后的空节点。说明没有环,返回false。 4.若有环,则快指针必定会被慢指针追上。因此若相等则返回true。

代码语言:javascript
代码运行次数:0
运行
复制
public class Solution {
    public boolean hasCycle(ListNode head) {
        if(head == null || head.next == null){
            return false;
        }
        
        ListNode slow = head;
        ListNode fast = head.next;

        while(slow != fast){
        if(fast == null || fast.next == null){
            return false;
        }
            slow = slow.next;
            fast = fast.next.next;
        }
        return true;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目传送门
  • 方法一:哈希表
  • 方法二:快慢指针
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档