定个小目标之刷LeetCode热题(20)

这题与上一题有一点不同,上一题是判断链表是否存在环,这题是寻找入环的第一个节点,有一个规则是这样的,在存在环的情况下,运用快慢指针判断是否有环结束时,把快指针指向头结点,慢指针不变,然后循环快慢指针每次只走一步,最终会在入环的第一个节点相遇,代码如下

java 复制代码
public class Solution {
    public ListNode detectCycle(ListNode head) {
        if (head == null || head.next == null) {
            return null;
        }
        ListNode slow = head, fast = head;
        while (fast != null) {
            slow = slow.next;
            if (fast.next != null) {
                fast = fast.next.next;
            } else {
                return null;
            }
            // 如果在快慢指针规则移动指针存在slow == fast说明存在环
            if (slow == fast) {
                // 此时需要寻找入环的第一个节点,将fast指向头节点
                fast = head;
                // 然后快指针和慢指针各移动一次,最终会在入环的第一个节点相遇
                while (slow != fast) {
                    slow = slow.next;
                    fast = fast.next;
                }
                return fast;
            }
        }
        return null;
    }
}

题目链接:题单 - 力扣(LeetCode)全球极客挚爱的技术成长平台

相关推荐
Mr YiRan3 小时前
C++面向对象继承与操作符重载
开发语言·c++·算法
香芋Yu7 小时前
【大模型面试突击】10_推理部署与优化
面试·职场和发展
蚊子码农7 小时前
算法题解记录--239滑动窗口最大值
数据结构·算法
liliangcsdn7 小时前
A3C算法从目标函数到梯度策略的探索
算法
陈天伟教授8 小时前
人工智能应用- 材料微观:06.GAN 三维重构
人工智能·神经网络·算法·机器学习·重构·推荐算法
liliangcsdn8 小时前
A3C强化学习算法的探索和学习
算法
Figo_Cheung9 小时前
Figo《量子几何学:从希尔伯特空间到全息时空的统一理论体系》(二)
算法·机器学习·几何学·量子计算
额,不知道写啥。9 小时前
HAO的线段树(中(上))
数据结构·c++·算法
LYS_06189 小时前
C++学习(5)(函数 指针 引用)
java·c++·算法
紫陌涵光9 小时前
669. 修剪二叉搜索树
算法·leetcode