当前位置: 首页 > news >正文

【js刷题:数据结构链表之环形链表】

环形链表

  • 一、题目
  • 二、实现思路
    • 1.判断是否有环
    • 2.如何找到环状链表的入口节点
  • 三、解题代码

一、题目

在这里插入图片描述

二、实现思路

主要有两点,首先我们要判断这个链表是否有环,其次我们要找到这个环的入口节点。

1.判断是否有环

定义一个快指针fast和慢指针slow
快指针每次移动两个节点,慢指针移动一位,那么如果快指针最终会与慢指针相遇,则说明这个链表有环,并且一定是在环内相遇(fast移动的长度是slow的两倍,相遇时fast一定是在环内,直线不会相遇)

2.如何找到环状链表的入口节点

在这里插入图片描述
设慢节点移动(x+y)*2(注:快指针的移动长度是慢指针的两倍),快节点移动x+y+n(z+y)后相遇
则(x+y)*2=x+y+n(z+y)
我们最终要通过x求到环状入口节点,所以将x移动到左边,得:
x=n(z+y)-y
再从n(y+z)中提出一个 (y+z)来,整理后得:x = (n - 1) (y + z) + z (注意这里n一定是大于等于1的,因为 fast指针至少要多走一圈才能相遇slow指针。)
这个公式意味着定义两个节点一个节点从头节点出发,另一个节点在指针相遇处出发,那么最终他们相遇的地方就是链表环状的入口节点。

三、解题代码

在这里插入图片描述

相关文章:

  • LitCTF
  • Unity Render入门
  • cuda 内核启动
  • 前端基础入门三大核心之HTML篇:探索WebAssembly —— 开启网页高性能应用新时代
  • 成都爱尔胡建斌院长提醒近视超过600度,记得每年检查眼底!
  • excel转pdf并且加水印,利用ByteArrayOutputStream内存流不产生中间文件
  • attributes.nodeName和attributes.nodeValue有什么区别(代码举例说明)
  • rust的版本问题,安装问题,下载问题
  • SpringCloud微服务调用的超时机制和CompletableFuture异步调用的超时机制原理一样吗?
  • 【Linux】-Elasticsearch安装部署[16]
  • 12、Go Gin使用JWT实现认证机制
  • 晶体振荡器
  • go routing 之 gorilla/mux
  • Flutter 中的 AnimatedPhysicalModel 小部件:全面指南
  • 设计模式 15 Decorator Pattern 装饰器模式
  • 【5+】跨webview多页面 触发事件(二)
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • HTML5新特性总结
  • JavaScript新鲜事·第5期
  • Java读取Properties文件的六种方法
  • Java精华积累:初学者都应该搞懂的问题
  • js
  • k个最大的数及变种小结
  • Spring声明式事务管理之一:五大属性分析
  • 阿里云购买磁盘后挂载
  • 分布式熔断降级平台aegis
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 码农张的Bug人生 - 见面之礼
  • 如何学习JavaEE,项目又该如何做?
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • (1)STL算法之遍历容器
  • (C++)八皇后问题
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)ssm高校实验室 毕业设计 800008
  • (六)软件测试分工
  • (三) diretfbrc详解
  • (十一)c52学习之旅-动态数码管
  • (小白学Java)Java简介和基本配置
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CLR基本术语
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [AI Google] 使用 Gemini 取得更多成就:试用 1.5 Pro 和更多智能功能
  • [C#]winform部署官方yolov10目标检测的onnx模型
  • [C#]科学计数法(scientific notation)显示为正常数字
  • [C#C++]类CLASS
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [C语言]——内存函数
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档
  • [Gamma]阶段测试报告
  • [Hadoop in China 2011] Hadoop之上 中国移动“大云”系统解析
  • [hive] posexplode函数
  • [HOW TO]如何在iPhone应用程序中发送邮件