leetcode142 环形链表2

题目

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

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

不允许修改 链表。

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

思路

确定有无环

首先想,怎么才能确定有没有环。如果在日常生活之中,两个人绕着圈跑,如果一个人比另一个人跑得快,那么一定会相遇。

放在题目中同理,我们控制两个指针,一个每次走一步,一个每次走两步,如果指针相遇,那么就存在环,如果没相遇,就不存在。

找环的入口

图示:

 可以看到,快指针每次走两步,慢指针一次走一步,快指针走的路程是慢指针的2倍。设快指针走了2k, 慢指针走了 k ,快指针就比慢指针多走了k 步,而这k 步中,快指针在环里转圈,也就是说k 是环的长度的整数倍。

此时,我们设环入口距相遇点的距离是 m,那么起点距环入口就是k - m, 相遇点距环入口的距离也是k - m,所以,只要我们把快慢指针中的任一个重新指向 head,然后两个指针同速前进,k - m 步后一定会相遇,相遇之处就是环的起点了。

代码

public class Solution {public ListNode detectCycle(ListNode head) {if(head==null||head.next==null){return null;}ListNode slow = head;ListNode fast = 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 = head;while(fast!=slow){fast = fast.next;slow = slow.next;}return fast;}
}

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

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

相关文章

大语言模型LLM《提示词工程指南》学习笔记05

文章目录 大语言模型LLM《提示词工程指南》学习笔记05在LLM中调用函数对抗性提示提示注入提示泄露非法行为DANWaluigi效应 防御策略在指令中添加防御参数化提示组件引用和其他格式对抗提示检测器 大语言模型LLM《提示词工程指南》学习笔记05 在LLM中调用函数 函数调用是一项重…

基于51单片机篮球24秒倒计时设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机篮球24秒倒计时设计( proteus仿真程序设计报告原理图讲解视频&#xff09; 基于51单片机篮球24秒倒计时设计 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真设计4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接下载链接 仿真图pro…

(3)(3.1) 英特尔Realsense深度摄像头(三)

文章目录 前言 10 系统概述 11 手动设置配套计算机 前言 本文介绍如何将英特尔 Realsense 深度摄像头(Intel Realsense Depth Camera)与 ArduPilot 配合使用&#xff0c;以实现避障(obstacle avoidance)。该方法使用在配套计算机上运行的 Python 脚本&#xff08;非 ROS&am…

【软考】极限编程

目录 1. 说明2. 价值观3. 原则4. 最佳实践5. 例题 1. 说明 1.XP(ExtremeProgramming)是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。2.它由价值观、原则、实践和行为4个部分组成&#xff0c;彼此相互依赖、关联&#xff0c;并通过行为贯穿于整个生存…

HackTheBox-Machines--MonitorsTwo

文章目录 0x01 信息收集0x02 CVE-2022-46169 漏洞利用0x03 权限提升0x04 提升到root权限 MonitorsTwo 测试过程 0x01 信息收集 a.端口扫描: 发现22、80端口    b.信息收集: 1.2.22 Cacti信息收集 nmap -sC -sV 10.129.186.1321.访问 10.129.186.132&#xff0c;为 1.2.22 Ca…

社交革命的引领者:探索Facebook的创新策略

1. 引言&#xff1a;社交媒体的崛起 社交媒体的兴起标志着信息时代的到来&#xff0c;它不仅改变了人们的生活方式&#xff0c;也影响着整个社会结构。作为社交媒体的先驱者&#xff0c;Facebook以其创新的策略和领先的技术&#xff0c;成为了这场社交革命的引领者。从2004年马…

如何通过drissionpage以及js逆向过字符/滑块/点选/九宫格验证码文章/视频学习案例

目录 零、各种关于drissionpage文章视频案例解决方案合集一、过字符类验证码反爬实战(自动化和逆向两种解法)二、过滑块类验证码反爬实战(自动化和逆向两种解法)三、过点选类验证码反爬实战(自动化和逆向两种解法)四、过九宫格验证码反爬实战(自动化和逆向两种解法)仅供…

itop4412编译内核时garbage following instruction -- `dmb ish‘ 解决方案

王德法 没人指导的学习路上磕磕绊绊太耗费时间了 今天编译4412开发板源码时报 garbage following instruction – dmb ish’ 以下是解决方案&#xff1a; 1.更新编译器 sudo apt-get install gcc-arm-linux-gnueabi 更新后修改Makefile 中编译器路径如下图 2.你以为更新完就可…

[iOS]进程-线程-队列-任务

一、进程&#xff08;Process&#xff09; 在 iOS 开发中&#xff0c;进程是一个基本的概念&#xff0c;虽然通常作为开发者&#xff0c;你不需要像在某些其他操作系统那样进行直接的进程管理&#xff0c;因为 iOS 提供了很多高级别的抽象。不过&#xff0c;了解进程的概念对于…

SqlServer功能性配置选择

功能性配置 下面的是必选的

传输层协议——UDP/TCP协议

目录 端口号 端口号范围 pidof UDP协议 UDP协议格式 UDP特点 UDP缓冲区 UDP的注意事项 基于UDP的应用层协议 TCP协议 TCP协议格式 序号与确认序号 窗口大小 6个标记位 紧急指针 确认应答机制 连接管理机制 三次握手 四次挥手 超时重传机制 流量控制 滑动…

【计算机网络】ip子网划分--超详细例题解析

Hello!这一篇主要是计算机网络中的ip地址子网划分的例题&#xff0c;这里例举了四个题型。保证即便从0也可以掌握&#xff01;(前面是一些预备知识&#xff0c;不熟悉的小伙伴一定要看下学习下哦&#xff5e;) 这也是博主的学习过程&#xff0c;做题中仅仅我的理解哦。若文章中…

vue开发工具和开发环境,测试环境等

Vue.js 的开发主要依赖于一些核心的工具和技术&#xff0c;它们共同构建了一个强大的开发环境&#xff0c;使开发者能够高效地创建和管理 Vue 应用程序。以下是一些主要的 Vue.js 开发工具和资源&#xff1a; 文本编辑器&#xff1a;如 Visual Studio Code (VS Code)&#xff…

Unity之C#面试题(二)

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity之C#面试题&#xff08;二&#xff09; TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&a…

langchain 文本向量化存储,并检索相似 topK

目录 chroma 检索 faiss 检索 检索器 相似性 最大相关性mmr 相似数阈值 txt 有多行&#xff0c;我的这份数据有 67 行&#xff0c;样例如下&#xff1a; 字段1\t值1\n 字段2\t值2\n ... chroma 检索 pip install langchain-chroma 在本地下载了 embedding 模型&…

SpringBoot 集成H2数据库,启动执行sql, 中文乱码

目录 H2数据库介绍 SpringBoot版本&#xff1a;SpringBoot 2.1.12.RELEASE 快速集成H2&#xff0c;maven依赖 快速集成H2&#xff0c;数据源及关键参数配置 spring.datasource.schema参数&#xff08;建表SQL脚本&#xff09; spring.datasource.data参数&#xff08;更新、…

深入探索Linux中的libgdbus:GDBus库的应用和实现

引言 在Linux系统中&#xff0c;DBus是一种高效的进程间通信&#xff08;IPC&#xff09;机制&#xff0c;广泛应用于桌面环境和系统服务之间的通信。GDBus是基于GLib库的DBus实现&#xff0c;作为libgdbus的一部分提供。它旨在提供一种简洁、高效的方式来实现DBus通信。通过深…

cocos2dx4.0 vs编译报错

1.版本 vs2017cocos 4.0 2.问题 不知道为什么编译运行cocos项目的时候报错了 错误信息如下&#xff1a; 15> 已完成执行任务“GetOutOfDateItems”的操作。 15> 由于 false 条件&#xff0c;已跳过任务“ParallelCustomBuild”&#xff1b;(‘(_ParallelCustomBuild)’…

vue3-element-admin二次开发遇到的问题总结,持续更新中

vue3-element-admin 是基于 Vue3 Vite5 TypeScript5 Element-Plus Pinia 等主流技术栈构建的免费开源的后台管理前端模板&#xff08;配套后端源码&#xff09;。 一、定制Element-Plus主题 1.创建 variables.scss 变量文件 /*variables.scss*/ /*覆盖element-plus变量*/…

前端面试复习大纲

在准备前端面试时&#xff0c;以下是一些可能会被问到的题目类型和概念&#xff0c;可以根据这些内容进行复习和准备&#xff1a; HTML/CSS基础 HTML5的新特性CSS盒模型响应式设计Flex布局和Grid布局浮动和定位CSS预处理器&#xff08;如Sass、Less&#xff09; JavaScript基础…