环形链表II-leetcode

news/2025/9/29 19:17:11/文章来源:https://www.cnblogs.com/foxt/p/19119354

题目描述

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos-1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

不允许修改 链表。

示例 1:

img

输入:head = [3,2,0,-4], pos = 1
输出:返回索引为 1 的链表节点
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

img

输入:head = [1,2], pos = 0
输出:返回索引为 0 的链表节点
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

img

输入:head = [1], pos = -1
输出:返回 null
解释:链表中没有环。

提示:

  • 链表中节点的数目范围在范围 [0, 104]
  • -105 <= Node.val <= 105
  • pos 的值为 -1 或者链表中的一个有效索引

进阶:你是否可以使用 O(1) 空间解决此题?

解法一

思路:

采用哈希表,依次遍历所有的节点,若当前节点在哈希表中出现,那么返回该节点。

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode detectCycle(ListNode head) {if (head == null || head.next == null) return null;Set<ListNode> set = new HashSet<>();ListNode p=head;while (p!=null) {if(set.contains(p)) return p;set.add(p);p = p.next;}return null;}
}

解法二

思路:

采用快慢指针的方法,当快慢指针相遇的时候,那么现在肯定在环内,此时再设置一个指针,从头指针开始,依次向后移动,同时,slow指针也向后移动。若他们相遇则就是入环点。

证明:

image-20250929190631617

image-20250929190609824

image-20250929190654791

代码:

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode detectCycle(ListNode head) {ListNode slow = head;ListNode fast = head;ListNode ptr = head;boolean flag = false;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;if (slow == fast){flag=true;break;}}if (!flag)return null;while(true){if(ptr == slow)return slow;slow = slow.next;ptr = ptr.next;}}
}

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

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

相关文章

ubuntu20.04安装nvidia显卡

24.04内核最新升级6.14.0,但是会出现英伟达驱动问题,现有的版本是6.8 重新安装了ubuntu20.04 先检查可用驱动:ubuntu-drivers devices下面会显示推荐安装的驱动版本,因为我原先的版本太低了,导致ubuntu内核更新一…

搬瓦工的主机可以用来做网站吗如何自己做加盟网站

文章目录 一.进程间通信:进程间通信的本质: 二.Linux管道通信匿名管道:关于管道通信的要点:基于匿名管道构建进程池: 三.System-V共享内存共享内存和命名管道协同通信 参考Linux内核源码版本------linux-2.4.3 一.进程间通信: 操作系统中,为了保证安全性,进程之间具有严格的独…

[线段树系列 #6] 标记永久化

[线段树系列 #6] 标记永久化 标记永久化是线段树的一个技巧,通常用于对主席树等难以 pushdown 的数据结构进行区间修改 具体思想已经体现在名字里了,我们结合例题稍微讲解一下 例题1 P3372 【模板】线段树 1 线段树区…

c语言switch和if语句

c语言switch和if语句c语言中switch和if语句 #include <stdio.h>int main(){int category = 2;float price = 299.9;switch (category){case 1 :if (price < 500){printf("电子产品价格较低,无优惠\n&qu…

Qt(制作一个方便的文本编辑器)

Qt(制作一个方便的文本编辑器)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…

购买网站空间后怎么做海南省官网

path_provider获取应用存储路径path_provider是flutter提供的一个获取应用存储路径的插件&#xff0c;它封装了统一的api来获取Android和ios两个平台的应用存储路径&#xff0c;提供的api如下&#xff1a;getTemporaryDirectory()&#xff1a;获取应用临时文件夹&#xff0c;该…

长沙建设工程造价网站wordpress连接服务器配置

戳“在看”一起来充电吧!C语言的那些经典程序 第十四期本期小C给大家带来三个用C语言解决实际问题的典例。如果全都理解&#xff0c;相信肯定能给大家带来收获&#xff01;接下来让我们看看是哪些程序吧&#xff01;1字符查找源程序&#xff1a;运行结果&#xff1a;程序分析:该…

DeepSeek-V3.2-Exp 完整分析:2025年AI模型突破与稀疏注意力技术深度解析

DeepSeek-V3.2-Exp 完整分析:2025年AI模型突破与稀疏注意力技术深度解析DeepSeek-V3.2-Exp是DeepSeek AI于2025年9月29日发布的实验性大语言模型,标志着该公司在AI架构创新方面的重要里程碑。作为V3.1-Terminus的升级…

Java EE初阶启程记05---线程安全 - 指南

Java EE初阶启程记05---线程安全 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

查域名优化方案2022

简介 上篇文章已经介绍了数据类型&#xff0c;如INTERGER TYPE、BITMASK TYPE、STRING TYPE、LINK LAYER ADDRESS TYPE、 IPV4 ADDRESS TYPE、 IPV6 ADDRESS TYPE、BOOLEAN TYPE、ICMP TYPE、CONNTRACK TYPES等。那么本篇文章主要介绍PRIMARY表达式的相关内容。 PRIMARY EXPR…

tldr的安装与利用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站内容授权书下列关于网站开发中网友上传

基于matlab的结构有限元分析。包括基于4节点四面体单元的空间块体分析、基于4节点四边形单元的矩形薄板分析、基于3节点三角形单元的矩形薄板分析、三梁平面框架结构的有限元分析、四杆桁架结构的有限元分析、基于8节点六面体单元的空间块体分析。每个程序都要相应的文档说明。…

DataGridView表格控件使用说明

可以添加和编辑列设置头部设置列的样子:设置高度 ,需要多个属性配合使用完全居中 ,每个列都需要进行设置效果展示:数据绑定 先设置属性public class SysAlarm{public string AlarmTime { get; set; }public string…

题解:P7126 [Ynoi2008] rdCcot

题意:很简单了,不再赘述。 做法: 考虑怎么数连通块,钦定一个代表元,因为这个东西是 \(C\) 邻域状物,跟深度有关,我们可以考虑一下 bfs 序,那么我们就以 bfs 序最小的元素为代表元。 然后我们就要考虑一个元素什…

阿里云网站 模板建设装修公司报价如何计算

查看源码发现 PHP非法参数名传参问题&#xff0c;详细请参考我的这篇文章&#xff1a;谈一谈PHP中关于非法参数名传参问题 正则这里绕过使用%0a换行符绕过&#xff0c;payload: /?b.u.p.t23333%0a 得到下一步信息&#xff1a;secrettw.php 注释中的是JsFuck&#xff0c;用这…

网站开发项目拖延周期免费建设视频网站

作者 | 徐运元&#xff0c;杭州谐云科技合伙人及资深架构师&#xff0c;云计算行业和 Kubernetes 生态资深从业者 导读&#xff1a;什么是 OAM&#xff1f;2019 年 10 月 17 日&#xff0c;阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟&#xff08;花名&#xff1a;小…

毕业答辩为什么做网站网站建设云技术公司推荐

1.PC按键控制 移动摄像头:WSADQE、鼠标右键 模拟双手:左手(左Shift)、右手(右Shift) 将模拟的双手保持在视野中:T或Y 旋转模拟手部:按住Ctrl并移动鼠标 捏合手势:左Shift/空格 + 鼠标左键 2.常用脚本 (1)HandInteractionTouch(需搭配NearInteractionTouchableVolum…

专业的网站开发团队xampp php网站模板

相关免费学习推荐&#xff1a;python视频教程原理十进制转n进制都可以使用倒除法&#xff1a;对十进制进行除n的运算&#xff0c;直到商为0为止&#xff0c;然后将各个步骤中得到的余数倒着写出来.n进制转十进制&#xff1a;(例子&#xff1a;二进制转十进制)101001 > 2^5 …

灰系网站深圳建站公司兴田德润放心

.gitignore简介 .gitignore文件是Git 版本控制系统中的一个重要配置文件&#xff0c;它用于指定哪些文件或目录应该被Git忽略&#xff0c;即不被纳入版本控制中。 .gitignore编写规则 在文件中添加要忽略的文件和目录的模式。每一行表示一个模式。 使用通配符来匹配多个文件或目…

网站备案 备注关联性沈阳男科最好的男科医院

1、首先配置正确Project Struct 保证需要引用的jar包库添加到Libraries里&#xff0c;尽管添加到Modules里依然可以测试运行或调试&#xff0c;但导出的jar包会遇到问题。 2、导出jar&#xff0c;方式选择如下 选择”From modules with dependencies" 然后去掉以上“Extr…