牛客算法刷题-BM6 判断链表中是否有环

news2024/11/20 10:44:56

描述
判断给定的链表中是否有环。如果有环则返回true,否则返回false。
数据范围:链表长度 0 ≤ \leq n ≤ \leq 10000,链表中任意节点的值满足 |val| ≤ \leq 100000。

要求:空间复杂度 O(1),时间复杂度 O(n)。

输入分为两部分,第一部分为链表,第二部分代表是否有环,然后将组成的head头结点传入到函数里面。-1代表无环,其它的数字代表有环,这些参数解释仅仅是为了方便读者自测调试。实际在编程时读入的是链表的头节点。

例如输入{3,2,0,-4},1时,对应的链表结构如下图所示:
在这里插入图片描述
可以看出环的入口结点为从头结点开始的第1个结点(注:头结点为第0个结点),所以输出true。

示例1

输入:{3,2,0,-4},1
返回值:true
说明:第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1(注:头结点为位置0),即-4->2存在一个链接,组成传入的head为一个带环的链表,返回true

示例2

输入:{1},-1
返回值:false
说明:第一部分{1}代表一个链表,-1代表无环,组成传入head为一个无环的单链表,返回false

示例3

输入:{-1,-7,7,-4,19,6,-9,-5,-2,-5},6
返回值:true

思路:
可以定义两个快、慢指针,快指针一定比慢指针多走一步,如果该链表中没有环,快指针的下一个结点一定是NULL,则返回false;如果有环,快指针会先进入循环链表中奔跑,等待着慢指针走向循环链表,等慢指针进入循环链表中后,快指针就在后面追赶,总有一天,它们会相遇。

  bool hasCycle(ListNode *head) {
        if(head==NULL)
        {
            return false;
        }
        //快慢指针
        ListNode* fast=head;
        ListNode* slow=head;
        //如果没环快指针会先到末尾
        while(fast!=NULL && fast->next!=NULL)
        {
            //快指针移动两步
            fast=fast->next->next;
            //慢指针移动一步
            slow=slow->next;
            //相遇则有环
            if(fast==slow)
            {
                return true;
            }

        }
     //末尾无环
     return false;
        
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

思科模拟器 | 静态路由和默认路由的配置

静态路由与默认路由一、静态路由1、自定义IP地址2、基本配置与接线3、接口配置与指令描述4、静态路由配置【⭐】5、主机测试连接二、默认路由1、基本命令配置2、测试连接一、静态路由 1、自定义IP地址 以下是我自己分配的主机和个接口的IP地址、子网掩码以及默认网关&#xf…

SSL协议

目录 理论部分 实验部分 环境搭建 web1配置 配置负载均衡 web2配置 lb配置 实验目标:模拟颁发证书实现https访问,搭建负载均衡。 理论部分 1. SSL:安全套接字层 它是由Netscape公司于1994年创建,它旨在通过Web创建安全的Internet通信。 它是…

什么是股票委托接口?

什么是股票委托接口?相信大家对这些做股票量化交易接口系统都有一定是了解,其实股票委托接口是一些预先定义的接口,如函数与HTTP接口,以及api接口等这些,或指软件系统不同组成部分衔接的协议,用来提供应用程…

举个栗子~Tableau 技巧(246):将标签置于条形图的末端

用条形图呈现数据时,为增加直观性,通常会用标签显示条形对应的数值。Tableau 默认将标签呈现在条形最右侧外部,我们通过设置格式,可以将其挪动到条形里的中间或最左边。 有数据粉反馈:有没有办法,将数值标…

【C语言经典面试题】memcpy函数有没有更高效的拷贝实现方法?

【C语言经典面试题】memcpy函数有没有更高效的拷贝实现方法? 我相信大部分初中级C程序员在面试的过程中,可能都被问过关于memcpy函数的问题,甚至需要手撕memcpy。本文从另一个角度带你领悟一下memcpy的面试题,你可以看看是否能接得…

4D毫米波雷达开启感知新大陆,这家企业给出这样的答案

当前,自动驾驶行业的内卷已是不争的事实。无论是以叠加传感器为手段的“堆料”,还是以测试里程论性能高低的“堆数据”,最终都指向了同一个问题:感知瓶颈。随着自动驾驶行业越来越趋于理性,技术的研发也将回归最基础的…

【数据可视化】第五章—— 基于PyEcharts的数据可视化

文章目录1. pyecharts数据可视化介绍2.pyecharts安装与使用3.全局配置项和系列配置项3.1 全局配置项3.1.1 基本元素配置项3.1.2 坐标轴配置项3.1.3 原生图形配置项3.2 系列配置项3.2.1 样式类配置项3.2.2 标记类型配置项3.2.3 其它类配置项4.…

【性能优化】pc端与移动端图片优化篇

目录 优化方向: 优化方式 1.域名收敛 2.使用CDN节点 3.设置缓存 4.图片懒加载 5.用户图片上传限制 6.使用OSS服务压缩 7.使用OSS缩放 8.合成雪碧图 9.使用svg图片 在前端项目中图片的性能优化也有不少可以提升的方向 优化方向: 减少请求数量…

Go语言基础知识

Go语言基础知识 一、准备工作 1.1下载安装Go 地址:https://studygolang.com/dl 1、根据系统来选择下载包 2、下载完成后直接双击运行 3、一路next,注意选择安装路径 4、在控制台窗口输入“go version”可查看Go版本,检测是否安装成功 5、…

基于STAN的风力发电预测(Python代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🎉作者研究:🏅🏅🏅本科计算机专业,研究生电气学硕…

应届生自学Python两个月,为什么找不到工作?

今天我们来看一个同龄小伙伴自学Python的困惑,他自学了2个月Python就想找一份好工作,但是四处碰壁。对于这样的难题,我们来看看前辈们是如何解决的。 如果你想要学好python最好加入一个组织,这样大家学习的话就比较方便&#xff…

华夏教师杂志华夏教师杂志社华夏教师编辑部2022年第24期目录

视点_青少年党史学习教育《华夏教师》投稿:cn7kantougao163.com 青少年学党史的震阳实践 沙夕岗; 4-527 视点_德育 幸福365,成长每一天——苏州工业园区星澄学校“幸福365”德育课程简介 赵志德; 6-745 学校_基层党建 “1X”党员引领匠心路—…

高通Ride软件开发包使用指南(2)

高通Ride软件开发包使用指南(2)3 Ubuntu系统设置3.1前提条件3.2安装Ubuntu3.3 安装 docker3.4 在Linux主机上安装QNX软件中心3 Ubuntu系统设置 以下步骤准备Ubuntu系统使用docker图像构建工具链SDK,并启用可视化。 3.1前提条件 确保您的电…

三年PHP经验如何提高工资?PHP接单推荐

大家都知道,一般来说以PHP来做开发的有很大一部分是外包公司,如果简简单单的干了一到两年多,那么我相信你的经验值肯定会大幅度提升,但是如果说要真正提高技术或者很快的提高工资,这在我看来,相较于其他语言…

管理员必看!10+个Salesforce仪表板使用技巧

Salesforce仪表板是一种将报表中关键数据可视化的简单方法,可以帮助识别趋势、整理数量并衡量其活动的影响。 本篇文章将分享10个仪表板使用技巧,有效利用这个开箱即用的核心Salesforce功能,可以帮助管理员和用户事半功倍。 01 提高仪表板的…

二苯并环辛炔DBCO-PEG3-OTs,二苯并环辛炔-三聚乙二醇-对甲苯磺酰酯

●外观以及性质: DBCO(二苯并环辛炔)是一种环炔烃,可以通过在水溶液中通过应变促进的1,3-偶极环加成反应与叠氮化物反应,这种生物正交反应也称为无铜点击反应。DBCO 点击化学可以在水性缓冲液中运行,也可以…

高通Ride软件开发包使用指南(3)

高通Ride软件开发包使用指南(3)4准备软件下载平台4.1 CDT供应4.1.1使用QFIL的CDT编程4.1.2使用fastboot进行CDT编程4.1.3 CDT验证4准备软件下载平台 所有Snapdragon Ride参考平台都应已完成通用闪存(UFS)编程和配置数据表&#x…

spring 事务传播行为以及失效原因

今天在查看以前写的代码时,看到了事务的使用,感觉自己对这一块并不是特别清晰,所以就系统的学习了一下。在学习过程中发现很多地方自己以前理解的还是有点不对,所以记录一下学习笔记,希望帮助到大家。 一、事务传播行…

随机接入流程 - 2-Step RA

Overview 在LTE和R15 NR中,终端以及基站采用的接入技术均为四步随机接入(4-Step Random Access)技术,即终端和基站之间需要经过5次信息交互(这里我们所说是的基于竞争的随机接入过程,对于非竞争随机接入过程只需要3次信息交互)才能完成随机接…

m基于FPGA的数字下变频verilog设计

目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 1.算法描述 整个数字下变频的基本结构如下所示 NCO使用CORDIC算法,CIC采用h结构的CIC滤波器,HBF采用复用结构的半带滤波器,而FIR则采用DA算法结构。 这里,我们…