算法打卡Day9_leetcode _142.环形链表 II

简介: 算法打卡Day9_leetcode _142.环形链表 II

Leetcode原题

142.环形链表 II

20200401134307494.png

思路

采用快慢双指针fast和slow. 快指针fast每次走2下,慢指针一次走一下。如果存在环形,那么总会有机会快指针会追上慢指针,两个在一个节点处相遇。

并设置存在环形标记,此时,将慢指针指向头节点,然后和快指针的步伐一致。随后,它和快指针每次向后移动一个位置。最终,它们会在入环点相遇。

 //采用快慢双指针
    public ListNode detectCycle(ListNode head) {
        if (head == null) {
           return null;
        }
        ListNode fast = head;//快指针,每次走2步
        ListNode slow = head;//慢指针,每次走1步
        boolean ifCycle=false;
        while (fast.next != null && fast.next.next != null) {
            fast = fast.next.next;
            slow = slow.next;
            //当快指针赶上慢指针,两指针有重叠时,说明是个环形链表
            if (slow == fast) {
                ifCycle = true;
                break;
            }
        }
        if (ifCycle){ //环存在
            slow =head ; //慢指针指向头节点
            while (slow!= fast){
                 fast =fast.next;
                 slow= slow.next;
            }
            return slow; //返回环开始的节点
        }
        return null;//环不存在
    }

有兴趣的老爷,还可以关注我的公众号【一起收破烂】,回复【006】获取 最新java面试资料以及简历模型120套哦~

相关文章
|
22天前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
31 1
|
29天前
Leetcode第21题(合并两个有序链表)
这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
46 0
Leetcode第21题(合并两个有序链表)
|
26天前
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
58 1
|
26天前
|
算法 索引
❤️算法笔记❤️-(每日一刷-141、环形链表)
❤️算法笔记❤️-(每日一刷-141、环形链表)
42 0
|
26天前
|
算法
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
41 0
|
26天前
|
算法
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
30 0
|
26天前
|
存储 算法
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
80 0
|
8天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
8天前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
21天前
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
21 2