数据结构练习题---环形链表详解

ops/2024/10/18 16:49:32/

链表成环,在力扣中有这样的两道题目

https://leetcode.cn/problems/linked-list-cycle/

https://leetcode.cn/problems/linked-list-cycle-ii/description/

这道题的经典解法是利用快慢指针,如果链表是一个环形链表,那么快指针(fast)和慢指针(slow)一定会相遇,那为什么它们会相遇呢?此时的快慢指针之间的关系是fast=2*slow,如果换成fast=3*slow/4*slow? 还会相遇吗? 

fast=2*slow推理如下 :

 fast=3*slow推理如下 :

理解原理之后,再写代码就简单得多:

bool hasCycle(struct ListNode *head) {struct ListNode*fast=head;struct ListNode*slow=head;while(fast&&fast->next){//刚开始的时候,slow和fast在同一个节点,注意要先移动fast=fast->next->next;slow=slow->next;if(fast==slow){return true;}}return false;
}

 这题的进阶版

同样离不开快慢指针,记录下它们相遇的点,再让开始的节点和相遇点同时移动,再次相遇的就是环的起始位置,分析如下: 

代码如下:

struct ListNode *detectCycle(struct ListNode *head) {struct ListNode*fast=head,*slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;//记录相遇的点if(fast==slow){struct ListNode*meet=slow;struct ListNode* cur=head;//知道相遇while(meet!=cur){meet=meet->next;cur=cur->next;}return meet;}}return NULL;
}

http://www.ppmy.cn/ops/32834.html

相关文章

Adobe 更新 Firefly Image 3 图像生成模型

一个工具或者模型,对于初次使用的人来说,易用性和超出预期的效果很能吸引使用者,suno和mj在这方面我感觉确实不错,第一次使用感觉很惊艳。 Adobe 更新 Firefly Image 3 图像生成模型,我用了mj的提示词,最后…

【ARMv8/v9 系统寄存 3 -- system counter CNTPCT_EL0】

文章目录 ARMv8/v9 system countersystem counter读取函数实现 ARMv8/v9 system counter 所有使用Arm处理器的系统中都会包含一个标准化的通用定时器(Generic Timer)框架。这个通用定时器系统提供了一个系统计数器(System Counter&#xff0…

ubuntu下anaconda虚拟环境开机自启动

(1) 要在Ubuntu系统中使Anaconda环境下的Python脚本在开机时自启动,可以通过创建一个systemd服务单元来实现。以下是步骤和示例代码: 创建一个新的systemd服务文件。 打开文本编辑器,创建一个新的服务文件。例如&…

城市反无人机技术

一、城市环境下反无人机难点 1) 城市建筑密级遮挡严重 城市中建筑物密集,通视条件差。设备若部署于地面,受限于建筑物遮挡,探测和处置距离有限。因此,通常采用将设备部署于建筑物楼顶的方式应对无人机威胁。此种方式对于飞行在楼…

MySQL 迁移到 Oracle 需要注意的问题

MySQL /Oracle 常见问题 1. VARCHAR/VARCHAR2/NVARCHAR 差异: MySQL 的 VARCHAR 是以字符为单位计算的,Oracle 的 VARCHAR 是 以字节为单位计算的,所以对中文的存储 Oracle 是 MySQL 的 2 倍 (GBK)和 3 倍(UTF8) 2. NULL 差异 A. MySQL…

探讨AIGC的发展现状以及趋势(2024)

目录 1. AIGC发展现状2. 技术应用3. 未来趋势 1. AIGC发展现状 AIGC(Artificial Intelligence in Games and Creativity,游戏与创意中的人工智能)技术的发展现状和未来趋势是一个令人兴奋的话题 目前它的发展现状有如下几个领域&#xff1a…

双fifo流水线操作——verilog练习与设计

文章目录 一、案例分析二、fifo_ctrl模块设计2.1 波形设计:2.2 代码实现2.2.1 fifo_ctrl2.2.2 顶层文件top_fifo_ctrl(rx和tx模块省略)2.2.3 仿真文件tb_fifo_ctrl 2.3波形仿真 一、案例分析 案例要求:写一个 fifo 控制器&#x…

车载电子电器架构 —— 关于bus off汇总

车载电子电器架构 —— 关于bus off汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…