力扣热门100题之环形链表

判断环形链表,最经典、面试必问的就是 快慢指针法(Floyd 判圈算法),我给你用最清晰的 Java 版 + 原理讲明白。

一、核心思路

  • 慢指针 slow 每次走 1 步
  • 快指针 fast 每次走 2 步
  • 如果链表有环 ,快指针一定会在环里追上慢指针(相遇)
  • 如果链表无环,快指针会走到 null,结束

对应关系就是这么来的(如果对于引用关系有问题可以看一看)

fast---->节点A → 节点B → null

• fast = 当前指向的节点 → 节点 A

• fast.next = 节点 A 的下一个 → 节点 B

• fast.next.next = 节点 B 的下一个 → null

这就是固定规则:谁在 . 前面,就从谁出发往后指。(fast就是节点本身)

java 复制代码
public class Solution {
    public boolean hasCycle(ListNode head) {
        //快慢指针法
        ListNode slow = head;
        ListNode fast = head;

        while(fast != null && fast.next != null){
            slow = slow.next;
            fast = fast.next.next;

            // 相遇 = 有环
            if (slow == fast) {
                return true;
            }
        }
        return false;
    }
}
相关推荐
To_OC5 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
旖-旎6 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
To_OC6 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
delishcomcn7 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹7 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
雪碧聊技术8 小时前
力扣 LCR 091. 粉刷房子 —— 动态规划入门详解
算法·动态规划
CV-Climber10 小时前
检索技术的实际应用
人工智能·算法
hhzz11 小时前
Tiger AI Platform平台中增加人脸识别功能
图像处理·人工智能·算法·计算机视觉·大模型
从零开始的代码生活_12 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法