网站制作建设南昌网站建设公司

四川鑫兆亿物资回收有限公司 2026/09/09 18:53:22

LeetCode---环形链表 II

首先要解决这个题,我们先要明白我们要考虑的情况

如果链表没有环,则直接返回null

ListNode fast=head; ListNode slow=head; while(fast!=null&&fast.next!=null){ fast=fast.next.next; slow=slow.next; if(fast==slow){ break; } }
if(fast==null||fast.next==null){ return null; }

如果有环,那我们也要考虑两种情况

圈大

从上面的图片中我们可以看出,当fast一次走两步,slow一次走一步的时候,我们会发现,

slow所走的路程是X+C-Y

fast所走的路程是X+C+C-Y

注意:慢指针不会走了很多圈才会被追上,实际上慢指针最多走半圈

如果实在想不懂,可以看看上面的图,一步一步带入进去

由于fast是一次性走两步,slow是一次性走一步

所以fast所走的路程是slow所走路程的两倍

slow所走的路程是X+C-Y

fast所走的路程是X+C+C-Y

所以我们可以列出等式 X+C+C-Y=2*(X+C-Y)

化简之后就可以看到

X==Y

由于X==Y

所以我们让指针1指针2同时走,那么它俩就会在入环的第一个节点相遇

圈小

所谓的圈小,就是当slow进环的时候,fast已经走了很多圈了

此时当slow和fast相遇的时候,走的路程分别是

slow:X+C-Y

fast:X+N*C+C-Y

由于fast所走的路程是slow的两倍

所以

2*(X+C-Y)=X+N*C+C-Y

化简后得到

x+c-y=nc

x=(n-1)c+y

当n==0的时候,X==Y,恰好是圈大的情况

当fast走了n-1圈后,依旧是回到相遇点,然后再加上个Y,正好是入环的第一个节点

假设圈的长度是2,当slow走了X的一半的时候,fast恰好入环

此时,slow每走一步,fast就走一圈

完整版代码:

public class Solution { public ListNode detectCycle(ListNode head) { ListNode slow=head; ListNode fast=head; //首先在环中找到相遇的点 while(fast!=null&&fast.next!=null){ slow=slow.next; fast=fast.next.next; if(slow==fast){ break; } } //没找到环的情况 if(fast==null||fast.next==null){ return null; } //定义一个新节点,从头开始走,每次走一步,fast也每次走一步 //当cur和fast相等的时候,跳出循环,此时这个节点就是入环的第一个节点 ListNode cur=head; while(cur!=fast){ cur=cur.next; fast=fast.next; } return cur; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

摄影网站建设装饰网站建设

收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我项目介绍随着人们对健康的重视程度不断提高,预防性健康需求日益增长。HPV疫苗作为预防性疫苗,

2026/06/30 12:46:33

南宁网站建设公司移动网站建设

多智能体系统设计:DeepResearch的AI架构经验引言从单体智能到群体智能的范式转变在人工智能发展的早期阶段,我们主要关注如何构建单个强大的智能体——一个能够独立完成

2026/06/30 13:06:04

网站建设深圳做网站建设的

服务安全与管理模式解析1. 安全基础设施模式可缓解的威胁类别在服务通信中,安全是至关重要的一环。安全基础设施模式能够帮助我们缓解多种威胁,以下是具体的威胁类别及应对措施:| 威胁 | 应对措施 ||

2026/06/30 13:40:36

医疗网站建设小企业网站建设

Codex与Qwen3-14B对比:中文场景下哪个更适合代码生成?在现代软件开发中,AI辅助编程早已不是未来概念——它正深刻改变着开发者的工作流。从自动补全一

2026/06/30 13:03:04

桂林网站建设富阳网站建设

深入探究Sendmail安全与配置1. Sendmail安全概述在当今数字化的时代,电子邮件系统的安全性至关重要。Sendmail作为一款常用的邮件传输代理(MTA),其安全问题不容忽视。Sendma

2026/06/30 12:56:33

手机网站建设呼和浩特网站建设

Hunyuan-MT-7B vs 其他7B翻译模型:谁才是真正的性能王者?在全球化浪潮席卷各行各业的今天,语言早已不再是简单的交流工具,而成为信

2026/06/30 13:58:08

建设部网站河南网站建设

Mos终极配置指南:让Mac鼠标滚动体验焕然一新【免费下载链接】Mos一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A light

2026/06/30 10:58:52

北京网站建设报价鄂州网站建设

敏捷开发中的工具与客户参与管理1. 敏捷企业中的工具在敏捷开发中,我们常常在开始构建软件后才明确具体需求。这意味着开发者会依据当下掌握的最佳信息来构建软件,在完成部分功能后向客户和用户展示,以获取进一

2026/06/30 11:02:53