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

【练习】【链表】力扣热题100 141. 环形链表

题目

  1. 环形链表

来源:力扣热题100 141. 环形链表


思路(注意事项)

快慢指针。


纯代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
        if (head == nullptr || head -> next == nullptr) return false;
        ListNode *p = head -> next, *q = p -> next;
        while (p != q && q != nullptr)
        {
            p = p -> next;
            q = q -> next;
            if (q != nullptr) q = q -> next;
        }
        if (q == p) return true;
        else return false;
    }
};

题解(加注释)

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
        // 如果链表为空或只有一个节点,直接返回 false
        if (head == nullptr || head -> next == nullptr) return false;

        // 定义两个指针 p 和 q,分别指向 head 的下一个节点和下下个节点
        ListNode *p = head -> next, *q = p -> next;

        // 使用快慢指针法遍历链表
        while (p != q && q != nullptr)
        {
            p = p -> next; // 慢指针 p 每次走一步
            q = q -> next; // 快指针 q 每次走两步
            if (q != nullptr) q = q -> next;
        }

        // 如果 p 和 q 相遇,说明链表有环
        if (q == p) return true;
        // 否则,链表无环
        else return false;
    }
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/52895.html

相关文章:

  • 汽车免拆诊断案例 | 2023款丰田雷凌汽油版车行驶中偶尔出现通信故障
  • 八、Redis 过期策略与淘汰机制:深入解析与优化实践
  • C语言-指针
  • android_viewtracker 原理
  • Vue的简单入门 三
  • Qt 坐标体系:逻辑坐标与物理坐标的区别与实践
  • SCI期刊推荐 | 免版面费 | 计算机领域:信息系统、软件工程、自动化和控制
  • Scala 中 val 和对象内部状态的关系
  • 如何搭建本地LLM的应用和开发
  • VBA信息获取与处理第五节:如何在单个工作表中查找某个给定值
  • 通往 AI 之路:Python 机器学习入门-机器学习基本概念
  • C/C++ 内存管理
  • 马斯克:AI游戏前景无限
  • 大模型+知识图谱:重塑企业制度标准管理
  • C++方向的面经
  • Self-Supervised Prompt Optimization
  • HTTP协议(20250305)
  • 设计模式:迭代器模式
  • Oracle常用分析诊断工具(9)——AWR
  • 杨辉三角解法
  • BambuStudio学习笔记:MeshBoolean类
  • C#+Halcon 检测稳定性提升的方式
  • docker:配置 Docker 镜像加速器
  • 计算机毕业设计SpringBoot+Vue.js校园网上店铺(源码+文档+PPT+讲解)
  • Webpack分包与合包深度解析
  • 面试基础--Spring Boot启动流程及源码实现
  • 【AI】【Unity】关于Unity接入DeepseekAPI遇到的坑
  • 全网独家:zabbixV7版本容器服务器无法访问Postgres V17数据库的问题解决
  • 启智平台华为昇腾910B 运行DeepSeek Janus-Pro-7/1B
  • 高并发应用分层架构