链表中环的入口节点(环形链表),剑指offer,力扣

目录

力扣题目地址:

题目:

我们直接看题解吧:

解题方法:

审题目+事例+提示:

解题分析:

解题思路:

主要思路:先判断是否有环,有则找出环入口节点


力扣题目地址:

142. 环形链表 II - 力扣(LeetCode)

难度:中等

今天刷链表中环的入口节点(环形链表),大家有兴趣可以点上看看题目要求,试着做一下

题目:

给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。

说明:不允许修改给定的链表。

我们直接看题解吧:

解题方法:

此类题目一般使用双指针法解决,比如寻找尾部第K个节点,寻找环入口。寻找公共尾部入口等。

方法1,哈希表,利用元素不可重复的性质

方法2,快慢指针(双指针)

难度分析:

这道题主要难在理解两个指针二次相遇的位置即为入口节点,需要数学推导进行理解

审题目+事例+提示:

不可原地修改链表

解题分析:

如果仅仅只是判断链表是否有环的话,直接快慢指针法是否相遇即可(只需要一次)

但是这道题目需要求出的是环入口节点,当然也是用双指针法较优(但是需要让两个指针相遇两次)

解题思路:

主要思路:先判断是否有环,有则找出环入口节点

1、首先判断链表是否为空,空则返回null

2、接下来创建双指针,快指针fast,慢指针slow,都初始化指向头结点head

3、第一次循环遍历:  判断是否存在环,即fast是否指向null

    fast每次移动2步,slow每次移动1步

    ·无环,fast指向null则直接返回null

    ·有环,fast与slow将会相遇即fast==slow(第一次)则跳出循环

4、 第二次循环遍历:寻找入口节点

     将fast 指针再次初始化,指向头结点head,slow不变

    在循环里面:

    fast与slow都是每次移动1步,直到它们相遇(第二次),则跳出循环

                                              (   此时它们相遇之处即为  环的入口节点)

5、最后返回fast。

代码实现:

public class Solution {public ListNode detectCycle(ListNode head) {ListNode fast = head, slow = head;while (true) { //第一次循环,是否存在环//fast当前指向或者下一位为null,意味着已经遍历到链表尾部,即无环if (fast == null || fast.next == null) return null;fast = fast.next.next;        //相当于移动两步slow = slow.next;if (fast == slow) break; //相等直接退出循环,即存在环}fast = head;          //fast指针再次初始指向头结点headwhile (slow != fast) { //第二次循环,找出环入口节点slow = slow.next;fast = fast.next;}return fast;}
}

代码实现(哈希):

public class Solution {public ListNode detectCycle(ListNode head) {ListNode pos = head;Set<ListNode> visited = new HashSet<ListNode>();while (pos != null) {if (visited.contains(pos)) {return pos;} else {visited.add(pos);}pos = pos.next;}return null;}
}

最后附上一句评论:

     "如果环存在,那么相遇便是注定的。从开始到相遇,从相遇到结束。"

         (果然恋爱脑不适合刷题...)

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

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

相关文章

FFmepg 核心开发库及重要数据结构与API

文章目录 前言一、FFmpeg 核心开发库二、FFmpeg 重要数据结构与 API1、简介2、FFmpeg 解码流程①、FFmpeg2.x 解码流程②、FFmpeg4.x 解码流程 3、FFMpeg 中比较重要的函数以及数据结构①、数据结构②、初始化函数③、音视频解码函数④、文件操作⑤、其他函数 三、FFmpeg 流程1…

【学习笔记】插值之拉格朗日插值(Lagrange)

0 插值介绍 插值法是广泛应用于理论研究和工程实际的重要数值方法。用提供的部分离散的函数值来进行理论分析和设计都是极不方便的&#xff0c;因此希望能够用一个既能反映原函数特征&#xff0c;又便于计算的简单函数去近似原函数。 1 低次拉格朗日插值 定理&#xff1a;设…

福利来了| 200多款精选简历模板免费领,让你30秒内征服HR!

找工作是不是让你很头大&#xff1f;尤其是写简历&#xff0c;真的好痛苦啊&#xff01;我在网上找了好久&#xff0c;都没有找到合适的简历模板&#xff0c;自己做又不知道从哪里下手。 不过现在好了&#xff0c;有一个超级福利送给大家&#xff01;200多款精选简历模板免费领…

codeformer,是如何对数据进行降级处理的?是如何模糊人脸图像的?

答案&#xff1a;https://github.com/sczhou/CodeFormer/blob/8392d0334956108ab53d9439c4b9fc9c4af0d66d/basicsr/data/ffhq_blind_dataset.py#L90 运动模糊&#xff1a; # motion blurif self.use_motion_kernel and random.random() < self.motion_kernel_prob:m_i ran…

使用HTML+CSS+JS网页设计与制作,酷炫动效科技农业网页

使用HTMLCSSJS网页设计与制作&#xff0c;酷炫动效科技农业网页。 可以用于家乡介绍、科技农业、图片画廊展示等个人网站的设计与制作。农业网站、家乡网站、农产品网站、旅游网站。 网站亮点 1、视觉设计&#xff1a;排版布局极简设计&#xff0c;优质的视觉体验等。 2、动…

手摸手Element-ui路由VueRoute

后端WebAPI准备 https://router.vuejs.org/zh/guide/ https://v3.router.vuejs.org/zh/installation.html <template><el-table:data"tableData"style"width: 100%":row-class-name"tableRowClassName"><!-- <el-table-colum…

【华为OD】统一考试B\C卷真题:100%通过: 分班 C/C++源码实现

目录 题目描述&#xff1a; 示例1 C源码实现&#xff1a; 题目描述&#xff1a; 幼儿园两个班的小朋友在排队时混在了一起&#xff0c;每位小朋友都知道自己是否与前面一位小朋友是否同班&#xff0c;请你帮忙把同班的小朋友找出来。 小朋友的编号为整数&#xff0c;与前一…

3-全功能pytest测试框架-allure2

3-全功能pytest测试框架-allure2 一:Allure介绍1> Allure 优势2> Allure 安装二:allure demo1> 脚本demo2> 查看result三:allure装饰器1> 装饰器一览表2> 装饰器概述1. epic、feature、story3> @allure.title()4> @allure.testcase()5> @allure.…

【linux挂载windows,密码含特殊字符,使用证书方式挂载】

1、设置Windows端共享文件目录 暂定设置共享目录为为&#xff1a;D:\shared 2、Linux客户端挂载 安装samba服务 查看是否安装&#xff1a;rpm -qa | grep samba samba4-libs-4.0.0-58.el6.rc4.x86_64 samba4-4.0.0-58.el6.rc4.x86_64 samba4-client-4.0.0-58.el6.rc4.x86_64 s…

Vue框架学习笔记——侦听(监视)属性watch:天气案例+immediate+deep深度监听

文章目录 前文提要天气案例描述样例代码呈现效果&#xff1a;事件的响应中可以写一些简单的语句&#xff08;不推荐&#xff09; 侦听&#xff08;监视&#xff09;属性watch结合天气案例的第一种写法&#xff08;New Vue&#xff09;immediate&#xff1a; 侦听&#xff08;监…

为什么要用 Redis 而不用 map/guava 做缓存? Redis为什么这么快 Redis有哪些数据类型 Redis的应用场景

文章目录 为什么要用 Redis 而不用 map/guava 做缓存?Redis为什么这么快Redis有哪些数据类型Redis的应用场景总结一计数器缓存会话缓存全页缓存&#xff08;FPC&#xff09;查找表消息队列(发布/订阅功能)分布式锁实现 总结二 简单的聊聊Redis常见的一些疑问点&#xff1a;具体…

Spring Security 6.1.x 系列(5)—— Servlet 认证体系结构介绍

一、前言 本章主要学习Spring Security中基于Servlet 的认证体系结构&#xff0c;为后续认证执行流程源码分析打好基础。 二、身份认证机制 Spring Security提供个多种认证方式登录系统&#xff0c;包括&#xff1a; Username and Password&#xff1a;使用用户名/密码 方式…

MATLAB中FFT频谱分析使用详解

文章目录 语法说明语法一&#xff1a;Y fft(X)fft(X)返回X长度的傅里叶变换 语法二&#xff1a;Y fft(X,N)如果 X的长度小于 N&#xff0c;则为 X补上尾零以达到长度 N(FFT插值)双边谱转换为单边谱 如果 X 的长度大于 N&#xff0c;则对 X 进行截断以达到长度 N。 语法三&…

Postman如何使用(四):接口测试

一.接口 1.程序内部接口&#xff1a;方法与方法之间&#xff0c;模块与模块之间的交互&#xff0c;程序内部抛出的接口&#xff0c;比如bbs系统&#xff0c;有登录模块&#xff0c;发帖模块等等&#xff0c;那你要发帖就必须先登录&#xff0c;那么这两个模块就得有交互&#…

Nginx(九) aio sendfile directio 组合使用测试(2)

测试7&#xff1a;开启directio2m、sendfile&#xff0c;关闭aio&#xff0c;请求/vendor.js {"time_iso8601":"2023-11-26T22:47:3508:00","request_uri":"/vendor.js","status":"200","bytes_sent":…

什么是数据增强,为什么会让模型更健壮?

在做一些图像分类训练任务时&#xff0c;我们经常会遇到一个很尴尬的情况&#xff0c;那就是&#xff1a; 明明训练数据集中有很多可爱猫咪的照片&#xff0c;但是当我们给训练好的模型输入一张戴着头盔的猫咪进行测试时&#xff0c;模型就不认识了&#xff0c;或者说识别精度…

Makefile讲解

CC g CFLAGS -stdc11 -Wall -pthread LDFLAGS SRCS ../main.cpp socketCan_FW_Download.cpp OBJS $(SRCS:.cpp.o)acandev: $(OBJS)$(CC) $(CFLAGS) $(OBJS) -o acandev $(LDFLAGS)%.o: %.cpp$(CC) $(CFLAGS) -c $< -o $clean:rm -f $(OBJS) acandev解释下上面Makefile中…

栈和队列OJ题目——C语言

目录 LeetCode 20、有效的括号 题目描述&#xff1a; 思路解析&#xff1a; 解题代码&#xff1a; 通过代码&#xff1a; LeetCode 225、用队列实现栈 题目描述&#xff1a; 思路解析&#xff1a; 解题代码&#xff1a; 通过代码&#xff1a; LeetCode 232、用栈…

Harmony入门-HelloWorld

HarmonyOS 已经出来一些时间了。也有了OpenHarmony&#xff0c;作为HarmonyOS抽离的基础架构OpenHarmony&#xff0c;贡献给开源了&#xff0c;后续独立出来&#xff0c;那可真是就要独立生态啦&#xff0c;咱们顺水行舟&#xff0c;学习学习。 1.IDE 安装 https://hmxt.org/d…

MySQL学习day03

一、SQL图形化界面工具 常用比较常用的图形化界面有sqlyog、mavicat、datagrip datagrip工具使用相当方便&#xff0c;功能比前面两种都要强大。 DataGrip工具的安装和使用请查看这篇文档&#xff1a;DataGrip 安装教程 DML-介绍 DML全称是Data Manipulation Language(数据…