当前位置: 首页 > article >正文

《链表篇》---环形链表II(返回节点)

题目传送门

方法一:哈希表(与环形链表类似)

很容易就可以找到链表的相交位置。

public class Solution {
    public ListNode detectCycle(ListNode head) {
        if(head == null || head.next == null){
            return null;
        }

        Set<ListNode> visited = new HashSet<>();
        while(head != null){
            visited.add(head);
            head = head.next;
            if(visited.contains(head)){
                return head;
            }            
        }
        return null;
    }
}

方法二: 快慢指针

难点不在于判断是否是环形链表。而是返回相交节点。

我们要记住当快指针和慢指针相遇的时候。我们新建一个指针指向头结点。此时我们让头指针和慢指针同时往后走。那么他们一定会相遇。此时我们再返回头结点。

public class Solution {
    public ListNode detectCycle(ListNode head) {
        if(head == null || head.next == null){
            return null;
        }

        ListNode fast = head;
        ListNode slow = head;

        while(fast != null){
            if(fast.next != null){
                fast = fast.next.next;
            }else{
                return null;
            }
            slow = slow.next;

//当快指针和慢指针相遇的时候。
//我们新建一个指针指向头结点。此时我们让头指针和慢指针同时往后走。
//那么他们一定会相遇。此时我们再返回头结点。
            if(fast == slow){
                ListNode ptr = head;
                while(ptr != slow){
                    ptr = ptr.next;
                    slow = slow.next;
                }
                return ptr;
            }
        }
        return null;

    }
}


http://www.kler.cn/a/370662.html

相关文章:

  • QT 使用QTableView读取数据库数据,表格分页,跳转,导出,过滤功能
  • java使用poi-tl自定义word模板导出
  • pandoc + wkhtmltox 批量转换Markdown文件为PDF文件
  • NumPy;NumPy在数据分析中的应用;NumPy与其他库的搭配使用
  • GMM高斯混合聚类算法(Matlab)
  • ChatGPT结合Excel辅助学术数据分析详细步骤分享!
  • Pytorch笔记--RuntimeError: NCCL communicator was aborted on rank 3.
  • C#自定义事件的案例
  • 前端阻止用户调试(禁用F12,禁用右键菜单,禁用查看源代码,禁用复制,无限debugger断点)
  • 【Linux 从基础到进阶】高负载系统的优化与维护
  • Java学习Day51:紫云山金丹培育基地(移动端开发之多表联查,发送短信验证码)
  • Spring Task—定时任务
  • 钉钉日常报销单与金蝶云星空集成技术详解
  • springboot配置websocket
  • 2025秋招八股文--RPC篇
  • 深入理解TCP——面试20问
  • win docker desktop踩坑及解决方案(拉取镜像失败)
  • 前端对一个增删改查的思考
  • 【机器学习】多项式回归
  • 实战OpenCV之深度学习
  • <大厂实战场景> ~ flutter鸿蒙next处理后端返回来的数据的转义问题
  • 大数据-186 Elasticsearch - ELK 家族 Logstash Input插件 JDBC syslog
  • SSRF服务端请求伪造
  • Pandas 数据分析基础操作:从创建到统计的实用指南
  • 人工智能与机器学习相关算法介绍
  • 掌握机器学习中的偏差与方差:模型性能的关键