LeetCode解法汇总142. 环形链表 II
目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客
GitHub同步刷题项目:
https://github.com/September26/java-algorithms
原题链接:
力扣
描述:
给定一个链表的头节点 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 <= 105pos的值为-1或者链表中的一个有效索引
进阶:你是否可以使用 O(1) 空间解决此题?
解题思路:
/**
* 142. 环形链表 II
* 解题思路:
* 快慢指针。
* 所以如果有环,那么快慢指针一定会相遇,否则快指针走到nullptr时,代表没有环。
* 如果相遇,快指针的速度一定是慢指针的两倍。我们把开始节点距离第一个环节点的长度设置为a,第一个环节点到相遇点设置为b,环长度-相遇点的长度设置为c。
* 则a+b=n(b+c),转换一下,a=(n-1)(b+c)+c。所以,起点距离第一个环节点的长度,就是走N个环+c的长度。
* 因此,相遇时,设置一个指针从头开始走a长度,慢指针继续走,两者的第一次相遇,就是a=(n-1)(b+c)+c。
*/
代码:
ListNode *detectCycle(ListNode *head){ListNode *fast = head;ListNode *slow = head;while (fast != nullptr){slow = slow->next;fast = fast->next;if (fast == nullptr){return nullptr;}fast = fast->next;if (fast == slow){break;}}if (fast == nullptr){return nullptr;}ListNode *ptr = head;while (slow != ptr){slow = slow->next;ptr = ptr->next;}return ptr;}
相关文章:
LeetCode解法汇总142. 环形链表 II
目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接: 力扣 描述: 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如…...
危化品行业防雷检测综合解决方案
危化品是指具有毒害、腐蚀、爆炸、燃烧、助燃等性质,能够对人体、设施或者环境造成危害的化学品。危化品的生产、储存、运输、使用等过程中,都存在着遭受雷击引发火灾或者爆炸事故的风险。因此,对危化品场所进行防雷检测,是保障危…...
刷题笔记:day 1
力扣 283 移动零 解法一:双指针 定义一个指针 cur 去遍历数组 ; 定义一个指针 dest 去指向已处理区间中,非零的最后一个位置。 然后让 指针 cur 遇到 0 ,就往后走 ; 遇到的数不是 0 ,就与 dest指针的下…...
Linux——平台设备及其驱动
目录 前言 一、平台设备 二、平台驱动 三、平台驱动简单实例 四、 电源管理 五、udev 和驱动的自动加载 六、使用平台设备的LED 驱动 七、自动创建设备节点 前言 要满足 Linux 设备模型,就必须有总线、设备和驱动。但是有的设备并没有对应的物理总线&#x…...
【C语言技巧】三种多组输入的写法
文章目录 第一种:直接与1判断第二种:与EOF判断第三种:巧用按位取反符号“~”写在最后 在代码的实际运用中,我们经常会遇到需要多组输入的情况,那么今天博主就带大家一起盘点三种常见的多组输入的写法 第一种࿱…...
DB2数据库巡检脚本
DB2数据库巡检脚本的示例: #!/bin/bash# 设置DB2登录凭证 DB2_USER"your_username" DB2_PASSWORD"your_password"# 设置巡检结果输出文件路径 OUTPUT_FILE"/path/to/output.log"# 获取DB2版本信息 version_info$(db2 connect to you…...
Eureka 学习笔记3:EurekaHttpClient
版本 awsVersion ‘1.11.277’ EurekaTransport 用于客户端和服务端之间进行通信,封装了以下接口的实现: ClosableResolver 接口实现TransportClientFactory 接口实现EurekaHttpClient 接口实现及其对应的 EurekaHttpClientFactory 接口实现 private …...
Android Framework 之 启动流程
Android 系统的启动流程 Android 系统的启动流程可以分为以下几个主要步骤: 引导加载器(Bootloader)启动:当你打开一个 Android 设备时,首先启动的是引导加载器。引导加载器负责启动 Android 的核心操作系统。 Linux…...
Qt、C/C++环境中内嵌LUA脚本、实现LUA函数的调用执行
Qt、C/C环境中内嵌LUA脚本、实现LUA函数的调用执行 Chapter1. Qt、C/C环境中内嵌LUA脚本、实现LUA函数的调用执行1、LUA简介2、LUA脚本的解释器和编译器3、C环境中内嵌LUA执行LUA函数调用4、Qt内嵌LUA执行LUA函数调用5、运行结果6、内嵌LUA脚本在实际项目中的案例应用 Chapter1…...
超详细 | 模拟退火算法及其MATLAB实现
模拟退火算法(simulated annealing,SA)是20世纪80年代初期发展起来的一种求解大规模组合优化问题的随机性方法。它以优化问题的求解与物理系统退火过程的相似性为基础,利用Metropolis算法并适当地控制温度的下降过程实现模拟退火,从而达到求解…...
在线餐饮油烟实时监测系统的设计与实现
安科瑞 华楠 摘 要:为了解决传统油烟检测方法中成本高、效率低、实时性差等问题,设计开发了一种在线油烟实时监测系统;系统由采集、通讯、服务器和用户交互四个模块组成;采集模块采集油烟数据,通过GPRS通讯技术将数据发…...
7-2 凯撒密码 (20分)
7-2 凯撒密码 (20分) 为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单…...
LeetCode_贪心算法_中等_763.划分字母区间
目录 1.题目2.思路3.代码实现(Java) 1.题目 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍…...
【算法提高:动态规划】1.5 状态压缩DP TODO
文章目录 状态压缩DP例题列表棋盘式1064. 小国王⭐🐂(好题!)做题套路总结 327. 玉米田(好题!🐂 和1064. 小国王差不多的题目)292. 炮兵阵地(和上面两道题差不多ÿ…...
建网站一般使用Windows还是liunx好?
建网站一般使用Windows还是liunx好? 1;服务器配置比较低时,最好使用linux系统。 对于一个电脑新手,刚开始做网站时,都会选择入门级的服务器,我刚开始做网站时,就是这样的。我购买了一台入门级服…...
NodeJs后端项目使用docker打包部署
docker安装看之前的文章 默认已经安装好docker并且配置没有问题 拉取项目 https://gitee.com/coder-msc/docker-node 本地跑一个看看 pnpm install pnpm start 本地访问 http://localhost:1301/getname?name%E5%93%88%E5%88%A9%E6%B3%A2%E7%89%B9项目整个上传服务器 查看…...
ARM单片机中断处理过程解析
前言 中断,在单片机开发中再常见不过了。当然对于中断的原理和执行流程都了然于胸,那么对于ARM单片机中断的具体处理行为,你真的搞清楚了吗? 今天来简单聊一聊,ARM单片机中断处理过程中的具体行为是什么样的…...
关于SEDEX会员与平台的相关问题汇总
【关于SEDEX会员与平台的相关问题汇总】 01.会员资格有效期是多久? Sedex会员资格有效期为12个月,您也可以选择更长期的会员资格。您支付会员年费时,在“订阅信息”框下的“延长订阅期限”中输入年数,即可获得更长的会员资格时效。…...
解读Spring-context的property-placeholder
在spring中,如果要给程序定义一些参数,可以放在application.properties中,通过<context:property-placeholder>加载这个属性文件,然后就可以通过value给我们的变量自动赋值,如果你们的程序可能运行在多个环境中&…...
【Rust】枚举类型创建单链表以及常见的链表操作方法
目录 单链表 用枚举表达链表 枚举enum Box容器 创建节点 1. 创建并打印 2. match 匹配 3. 节点初始化 4.节点嵌套 追加节点 1. 尾插法 2. 链表追加方法 3. 头插法 4. 改写成单链表方法 遍历链表 1. 递归法 2. 递推法 3. 改写成单链表方法 自定义Display tr…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
