LeetCode(力扣):环形链表

提示:

  • 链表中节点的数目范围是 [0, 104]
  • -105 <= Node.val <= 105
  • pos-1 或者链表中的一个 有效索引

进阶: 你能用 O(1)(即,常量)内存解决此问题吗?

java 复制代码
/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public boolean hasCycle(ListNode head) {
        //定义快慢指针
        ListNode slow = head;
        ListNode fast = head;
        //只要当前节点不为null,并且下一个节点不为null就继续
        while(fast != null && fast.next != null){
            //慢指针一次一步,快指针一次两步
            slow = slow.next;
            fast = fast.next.next;
            //两个相遇,说明是环
            if(slow == fast){
                return true;
            }
        }
        //跑到尽头为null,不是环
        return false;
    }
}

快指针只能每次走2步,不能是3步,因为三步可能导致直接越过慢指针,会多绕几圈才能碰到。

相关推荐
计算机安禾26 分钟前
【c++面向对象编程】第25篇:仿函数(函数对象):重载operator()
开发语言·c++·算法
周末也要写八哥1 小时前
在C++中使用预定义宏
开发语言·c++·算法
学会870上岸华师2 小时前
C 语言程序设计——第一章课后编程题
c语言·开发语言·学习·算法
小马过河R2 小时前
RAG检索优化策略:系统性四层框架解析
人工智能·python·算法·ai·llm·rag·问答
AI技术控2 小时前
论文解读:AE-TCN-SA——基于自编码器、TCN 与自注意力机制的锂电池内短路诊断方法
人工智能·python·深度学习·算法·机器学习·自然语言处理
ʚ希希ɞ ྀ2 小时前
动态规划基础知识---爬楼梯
算法·动态规划
计算机安禾2 小时前
【c++面向对象编程】第26篇:对象的内存模型:成员变量与成员函数的存储分离
开发语言·c++·算法
贩卖黄昏的熊2 小时前
陕西省ICPC省赛总结
算法
jieyucx3 小时前
Go 语言进阶:构造函数、父子结构体与组合复用详解
服务器·算法·golang·继承·结构体·构造函数
澈2073 小时前
滑动窗口算法:双指针高效解题秘籍
数据结构·c++·算法