12. 三昧真火焚环劫 - 环形链表检测(快慢指针)

server/2025/2/28 22:48:32/

哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的环形山脉,山脉中有一条蜿蜒的火龙,它象征着环形链表。山脉的入口处有一块巨大的石碑,上面刻着一行文字:“欲破此山,需以三昧真火之力,焚环劫之链,快慢指针定环踪。”

哪吒定睛一看,石碑上还有一行小字:“链表1 -> 2 -> 3 -> 4 -> 2中存在环,需要检测并找到环的入口。”哪吒心中一动,他知道这是一道关于环形链表检测的难题,需要判断链表中是否存在环,并找到环的入口。

暴力解法:三昧真火的初次尝试

哪吒心想:“要检测链表中是否存在环,我可以逐个节点遍历,用一个集合记录每个节点是否被访问过。”他催动三昧真火,从链表的头节点开始,逐个节点遍历,将每个节点存入集合中。如果发现某个节点已经存在于集合中,说明链表存在环。

cpp">bool hasCycle(ListNode* head) {unordered_set<ListNode*> visited;ListNode* current = head;while (current) {if (visited.find(current) != visited.end()) {return true;  // 发现环}visited.insert(current);current = current->next;}return false;  // 无环
}

哪吒成功地检测到了链表中的环,但三昧真火的光芒却黯淡了下来。他意识到,这种方法虽然可行,但需要额外的空间来存储访问过的节点,灵力消耗较大。

C++语法点:集合与链表操作

在C++中,集合和链表操作是处理链表问题的常用工具。以下是一些重要特性:

  • 集合
    • unordered_set是一个基于哈希表的集合,用于存储唯一元素。
    • 常用方法:
      • insert(value):插入一个元素。
      • find(value):查找一个元素是否存在。
  • 链表操作
    • 使用ListNode结构体表示链表节点,包含val(节点值)和next(指向下一个节点的指针)。
    • 常用操作:
      • node->next:访问节点的下一个节点。

高阶优化:快慢指针的智慧

哪吒元神中突然浮现金色铭文——「三昧真火焚,快慢指针定环踪」。他意识到,可以通过快慢指针的方式,检测链表中是否存在环,并找到环的入口。

哪吒决定使用快慢指针法,快指针每次移动两步,慢指针每次移动一步。如果链表中存在环,快指针最终会追上慢指针。如果快指针到达链表末尾,则说明链表无环。


http://www.ppmy.cn/server/171402.html

相关文章

矩阵营销的 AI 进化:DeepSeek 如何助力批量运营账号?

在数字营销的浪潮中&#xff0c;矩阵营销 已成为企业拓展市场、提升曝光的重要策略。然而&#xff0c;面对日益复杂的流量生态和平台风控&#xff0c;如何高效运营海量账号&#xff0c;同时保持内容的原创性和高转化率&#xff0c;成为营销人员的一大挑战。 随着 DeepSeek AI …

山东大学软件学院nosql实验二

实验二 熟悉环境、建立/删除表、插入数据 实验内容&#xff1a; 创建命名空间&#xff08;user学号&#xff0c;例如user201500300001&#xff09;&#xff0c;设计表结构并创建表&#xff0c;将附件数据插入。 实验步骤与内容&#xff1a; 方法一&#xff1a; 对于csv文…

验证码介绍及生成与验证(HTML + JavaScript实现)

验证码介绍及生成与验证&#xff08;HTML JavaScript实现&#xff09; 验证码 验证码&#xff08;全自动区分计算机和人类的图灵测试&#xff0c;‌CAPTCHA &#xff0c;C‌ompletely ‌A‌utomated ‌P‌ublic ‌T‌uring test to tell ‌C‌omputers and ‌H‌umans ‌A‌…

GDidees CMS v3.9.1本地文件泄露漏洞(CVE-2023-27179)

漏洞简介&#xff1a; GDidees CMS v3.9.1及更低版本被发现存在本地文件泄露漏洞&#xff0c;漏洞通过位于 /_admin/imgdownload.php 的 filename 参数进行利用。 漏洞环境&#xff1a; 春秋云镜中的漏洞靶标&#xff0c;CVE编号为CVE-2023-27179 漏洞复现: 进入靶场发现没…

0基础学前端-----CSS DAY13

HTML和CSS3提高 视频参考&#xff1a;B站Pink老师 本节重点&#xff1a;HTML和CSS3的新增特性 本章目录 HTML和CSS3提高1.HTML5新特性1.1HTML新增的语义化标签&#xff08;div无语义&#xff09;1.2 HTML5新增的多媒体标签1.2.1 视频<video>1.2.2 音频audio1.2.3 多媒体…

算法每日一练 (6)

&#x1f4a2;欢迎来到张胤尘的技术站 &#x1f4a5;技术如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 算法每日一练 (6)旋转图像题目描述解题思路解题代码c/…

Node.js项目启动流程以及各个模块执行顺序详解

Node.js项目启动流程以及各个模块执行顺序的问题。首先&#xff0c;我需要仔细阅读并理解我搜索到的资料&#xff0c;从中提取关键信息&#xff0c;然后综合这些信息组织成一个结构化的回答。 首先&#xff0c;根据我搜索到的资料都详细描述了Node.js的启动流程&#xff0c;涉及…

python实战项目59:使用python获取腾讯招聘数据并保存到mysql数据库中

python实战项目59:使用python获取腾讯招聘数据并保存到mysql数据库中 一、爬虫流程分析1、分析数据接口,发送请求二、创建数据库链接三、完整代码一、爬虫流程分析 1、分析数据接口,发送请求 目标网址为 https://careers.tencent.com/search.html?keyword=python&que…