LeetCode - 141. 环形链表 (C语言,快慢指针,配图)

目录

1. 什么是快慢指针

2. 非环形链表

3.代码展示

4.扩展:fast走3步,slow走一步呢?



1. 什么是快慢指针

        这里我们我们将介绍环形链表的经典解法——快慢指针,简单理解,指针移动快的叫做快指针fast,移动速度慢的叫慢指针slow。一般我们设快指针走两步,慢指针走一步。

        如果你对快慢指针理解或应用不太了解,可以参照下面几篇文章,去力扣练习。

LeetCode - 26. 删除有序数组中的重复项 (C语言,快慢指针,配图)-CSDN博客

LeetCode - 27. 移除元素 (C语言,快慢指针,配图)-CSDN博客

        通过下图,我们可以清晰地知道,当fast走两步,slow走一步时,如果这是一个环形链表,那么它们总有一天会遇见

2. 非环形链表

          那么我们来看一下非环形链表长什么样,通过下面这幅图片,我们可以知道非环形链表,那么fast或fast->next 一定为空,这与元素个数有关。

        当然这也是一道经典的链表中间节点的题目:876. 链表的中间结点 - 力扣(LeetCode)

3.代码展示

        通过上面两个铺垫,我们知道了 1.怎么判断是否为环形链表2.非环形链表的结束条件

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
bool hasCycle(struct ListNode *head) {
    struct ListNode* fast = head;
    struct ListNode* slow = head;
    while(fast && fast->next)
    {
        fast = fast->next->next;
        slow = slow->next;
        if(fast == slow)
        {
            return true;
        }
    }
    return false;
}

4.扩展:fast走3步,slow走一步呢?

        这里我们先给出结论,不论fast走几步,slow走几步,如果是环形链表,那么它们一定会相遇。这真是令人感动。

总结一下:

1. 如果N是偶数,第一轮就相遇

2. 如果N是奇数,C是偶数,第一轮错过,第二轮就能相遇

3.如果N是奇数,C是奇数,永远追不上(但这里的条件永远不能成立,可以自己代入上面fast走3步,slow走1步公式: 2L = n * C - N

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/154901.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车 CAN\CANFD数据记录仪

CAN FD数据记录仪解决汽车电子数据记录与偶发性故障查找问题。 1、脱机离线记录两路CAN/CANFD通道数据 脱机离线记录两路CAN/CANFD通道数据,可记录6个月数据。每个通 道单独设置触发记录模式、触发前预记录报文个数(默认1000帧)及 过滤规则&a…

NetApp E5700 系列混合闪存存储系统,将企业应用程序的性能提升到极致

主要优势 优势1、卓越的性能 • 利用最适合现代企业级应用(例如,大数据分析、技术计算、视频监控以及备份和恢复)的混合系统提高性能、IOPS 和密度。 优势2、无与伦比的价值 • 利用三个不同的磁盘系统架、多种驱动器类型和一套齐备的 SAN …

KT148A语音芯片使用串口uart本控制的完整说明_包含硬件和指令举例

一、功能简介 KT148A肯定是支持串口的,有客户反馈使用一线还是不方便,比如一些大型的系统不适合有延时的操作,所以更加倾向于使用uart控制,这里我们也给出解决方案 延伸出来另外一个版本,KT158A 注意次版本芯片还是…

教育数字化助力打造个性化语言学习环境

2023年,我国教育数字化呈现高速发展态势,网络教育用户规模、在线教育市场规模、数字内容市场规模再创历史新高,数字校园建设普及率、教师数字技术素养等均高于全球平均水平。 在数字技术支撑下,新的语言学习方式也在逐渐普及。 语言学家克拉申(Stephen Kr-ashen)提出的二语习得…

解决Web端请求响应超时HTTP状态码504和110 timed out错误(Nginx配置调整)

前言 在前端开发中,发送请求时,有时会遇到请求响应超时的问题(如 HTTP 状态码504 和 110错误)。这种问题可能是由于网络延迟、服务器响应时间过长或请求数据量过大等原因造成的。为了解决这个问题,我们可以通过配置 N…

python科研绘图:带正态分布的直方图

带正态分布的直方图是一种用直方图表示数据分布的图表,其中数据经过了正态分布的拟合。正态分布是一种常见的概率分布,具有平均值和标准差。在带正态分布的直方图中,数据被分成不同的区间,每个区间的频数或频率可以用颜色或标签表…

配电室中如何安装六氟化硫SF6气体泄漏报警装置?

六氟化硫气体泄漏报警装置安装位置产品的设计、检验、制造均遵循GB16808-2008《可燃气体报警控制器》和GB12358-2006《作业场所环境气体检测报警仪通用技术要求》严格设计。是经过高速CPU数据处理,通过LCD显示出探测器的浓度、状态并输出相应的控制信号。报警控制器…

恶意软件之系统病毒

病毒是迄今为止最常见的恶意软件类型之一。它是一种能够感染、破坏计算机设备,并在其运行系统上自我复制的程序。由于病毒是自我复制的,一旦安装并运行,它们就可以在同一网络上自动从一台设备传播到另一台设备,无需人为干预。病毒…

熬夜整理的Figma插件合集分享,快码住!

越来越多的设计师逐渐从用Sketch转变为用Figma做设计。相比起Sketch,Figma的基本功能上确实很厉害,但是他比较缺乏的一个东西就是没有很多丰富实用的插件支持。目前Figma作为一个快速发展的平台,逐渐搭建起了自己的辅助插件系统。如果你已经准…

vue+springboot实现图形验证码Kaptcha

1、前端 form使用了element-ui的组件&#xff0c;主要还是看img标签&#xff0c;src绑定了form.imgCodeUrl数据&#xff0c;点击图片时触发refreshCode更新图片验证码。 <el-form-item prop"verificationCode" label"验证码" style"text-align: l…

【informer】 时间序列的预测学习 2021 AAAI best paper

文章目录 前言1.引入2.数据集3. 训练4其它【待续】 前言 数据集 https://github.com/zhouhaoyi/ETDataset/blob/main/README_CN.md 代码&#xff1a;https://github.com/zhouhaoyi/Informer2020#reproducibility 21年的paper:https://arxiv.org/pdf/2012.07436.pdf 论文在代码…

1. redis入门到放弃

使用shutdown命令的时候&#xff0c;会在关机的同时生成一个RDB文件&#xff0c;使数据不丢失。redis虽然有16个库&#xff0c;但是基本上只会用0库&#xff0c;用其他的库没有意义。集群只能在0号库做mysql的读写&#xff0c;大约为写入600笔/s,读2000笔/s 一、Redis全局命令…

AI变现之数字人工具库账号引流

信息差无处不在&#xff0c;AI 发展到今天虽然工具和技术都日趋成熟&#xff0c;但是在国内普及率还不是很高&#xff0c;对于很多普通人估计也就听过 Chatgpt&#xff0c;MJ&#xff0c;SD 等 AI 工具的名词&#xff0c;但是没有真正的使用过&#xff0c;而使用 AI 数字人制作…

【Git学习一】初始化仓库git init的使用和提交git add与git commit的使用

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;Git等软件工具技术的使用 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要…

dvwa 文件上传漏洞通关攻略

dvwa 文件上传漏洞通关攻略 文章目录 dvwa 文件上传漏洞通关攻略low等级mediumhighimpossible 练习文件上传漏洞的攻击与防御 low等级 点击文件上传进行测试上传个一句话木马 <?php eval($_REQUEST[777]);?>上传成功 访问上传路径 进行蚁剑连接 代码审计 <?ph…

在市场发展中寻变革,马上消费金融树行业发展“风向标”

11月11日&#xff0c;2023金融街论坛年会第三届全球金融科技大会“金融科技创新与合规安全”平行论坛在北京召开。会上&#xff0c;马上消费金融副总经理孙磊就数据对金融的赋能作用、数据安全治理等方面展开了深度讨论。 公开信息显示&#xff0c;马上消费金融是一家经中国银保…

1. hadoop环境准备

环境准备 准备三台虚拟机&#xff0c;配置最好是 2C 4G 以上 本文准备三台机器的内网ip分别为 172.17.0.10 172.17.0.11 172.17.0.12本机配置/etc/hosts cat >> /etc/hosts<<EOF 172.17.0.10 hadoop01 172.17.0.11 hadoop02 172.17.0.12 hadoop03 EOF本机设置与…

ChatGPT简介及基本概念

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC &#x1f449;关于作者 专…

如何利用自动发现将现网的进程纳入到监控系统中?

进程监控是一项关键任务&#xff0c;旨在监测系统中运行的进程的性能和状态。通过有效的进程监控&#xff0c;可以实时了解进程的运行情况&#xff0c;及时发现问题并采取措施&#xff0c;确保系统的稳定性和性能。 本期EasyOps产品使用最佳实践&#xff0c;我们将为您揭晓&am…

leetCode 21.合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[]…