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

news/2025/2/25 18:10:41

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

哪吒定睛一看,石碑上还有一行小字:“链表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.niftyadmin.cn/n/5865812.html

相关文章

解决idea一个非常坑的问题

dea中经常会遇到这样问题&#xff0c;明明maven的pom中已经添加了依赖&#xff0c;总是提示jar包找不到&#xff0c; 于是双击clean &#xff0c;或者 点击 reload maven &#xff0c;都是不好使。如 javax.crypto.spec.IvParameterSpec;这个包&#xff0c;竟然飘红了。我clean…

人工智能(AI):科技新纪元的领航者

摘要 人工智能&#xff08;AI&#xff09;作为当今科技领域最具变革性的力量之一&#xff0c;正以惊人的速度重塑着我们的世界。本文旨在全面且专业地介绍人工智能&#xff0c;涵盖其定义、发展历程、关键技术、应用领域、面临的挑战以及未来展望等方面&#xff0c;以期为读者…

git上传gitee仓库---简单方便

安装完git以后 在资源管理器中右键&#xff1a; 选择Open Git Bash here 接着gitclone&#xff0c;从gitee上面复制链接: https://gitee.com/hekai666/python-deeplearning.git 粘贴过来&#xff1a; 回车&#xff1a; 然后在本地就会多出来一个文件&#xff1a; 打开文件夹以…

【STL】4.<list>

list 前言list容器一.list初始化二.常用函数三.排序 总结 前言 stl系列主要讲述有关stl的文章&#xff0c;使用STL可以大大提高程序开发的效率和代码的可维护性&#xff0c;且在算法比赛中&#xff0c;STL可以帮助我们更方便地实现各种算法。提高我们的效率。 list容器 要使用…

DeepSeek行业应用实践报告-智灵动力【112页PPT全】

DeepSeek&#xff08;深度搜索&#xff09;近期引发广泛关注并成为众多企业/开发者争相接入的现象&#xff0c;主要源于其在技术突破、市场需求适配性及生态建设等方面的综合优势。以下是关键原因分析&#xff1a; 一、技术核心优势 开源与低成本 DeepSeek基于开源架构&#xf…

ClickHouse系列之ClickHouse使用

ClickHouse系列之ClickHouse使用 1 ClickHouse 数据类型1.1 有符号整数1.2 无符号整数1.3 浮点数1.4 字符串类型1.4.1 String 1.5 时间类型Date1.6 DateTime 2 Clickhouse引擎类型2.1 Log系列引擎2.1.1 TinyLog引擎2.1.1.1 建表语法2.1.1.2 示例 2.2 MergeTree系列表引擎2.2.1 …

DeepSeek开源周高能开场:新一代高效推理引擎FlashMLA正式发布

全球AI社区沸腾&#xff01;DeepSeek开源周高能开场&#xff1a;新一代高效推理引擎FlashMLA正式发布 北京时间今晨&#xff0c;国内领先的人工智能研究机构深度求索&#xff08;DeepSeek&#xff09;在GitHub平台重磅推出全新开源项目FlashMLA&#xff0c;以破竹之势在开源界…

迅为RK3568开发板篇Openharmony配置HDF控制UART-实操-HDF驱动配置UART-配置 rk3568_uart_config.hcs

在上面的配置中需要注意以下几点&#xff1a; 1 device_uart_0x0004 中的后缀“0x0004”是串口编号。 2 num 与 driver_name 值“ttyS”组成驱动设备名&#xff0c;例如 ttyS4。UartOpen 函数参数 port,则表示上述 uart 设备排列序号&#xff0c;比如 num4 的 UartOpen 函数 po…