142 环形链表II

devtools/2024/10/22 5:01:40/

在这里插入图片描述
解题思路:
\qquad 之前在 环形链表I 中讲过利用快慢指针判断链表是否有环,当快慢指针相等时,链表中存在环。但环形链表II在其基础上,额外需要找到环的第一个节点,可以在快慢指针相遇的基础上,进一步分析。

\qquad 如果链表存在环,则快慢指针相遇于环上一点(如下图),将链表拆分成a, b, c三段,题目需要返回a、b段交界点的指针,由快慢指针相遇可得:

2 ( a + b ) = a + b + n ( b + c ) 2(a+b) = a + b + n(b+c) 2(a+b)=a+b+n(b+c)
a = n ( b + c ) − b a = n(b+c) - b a=n(b+c)b
a = c + ( n − 1 ) ( b + c ) a = c + (n-1)(b+c) a=c+(n1)(b+c)

\qquad 此时,如果使用两个指针分别从表头和相遇点开始移动,则这两个指针会相遇于环开始的节点,此时返回结果即可。 在这里插入图片描述

ListNode *detectCycle(ListNode *head) {ListNode* slow = head;ListNode* fast = head;ListNode* pos = head;while(fast != nullptr){slow = slow->next;if(fast->next != nullptr){fast = fast->next->next;}else return nullptr;if(slow == fast){while(pos != slow){slow = slow->next;pos = pos->next;}return pos;}}return nullptr;}

http://www.ppmy.cn/devtools/127741.html

相关文章

ckad准备

应用程序设计和构建–20% 应用部署 - 20% 应用观察和维护 - 15% 应用环境、配置与安全 - 25% 服务与网络 - 20% 应用程序设计和构建–20% l 定义、构建和修改容器鏡像 l 了解Jobs 和 CronJobs l 了解多容器Pod设计模式(例如si…

pipeline开发笔记

pipeline开发笔记 jenkins常用插件Build Authorization Token Root配置GitLab的webhooks(钩子)配置构建触发器--示例 piblish over sshBlue OceanWorkspace Cleanup PluginGit插件PipelineLocalization: Chinese (Simplified) --中文显示Build Environment Plugin 显示构建过程…

Transformer(Vit+注意力机制)

文献基本信息: Encoder-Decoder: Transformer的结构: 输入编码器解码器输出 Transformer的工作流程: 获取输入句子的每一个单词的表示向量X,X由单词的embedding(embedding是一种将高维特征映射到低维的技…

SQL Server-导入和导出excel数据-注意事项

环境: win10,SQL Server 2008 R2 之前写过的放在这里: SqlServer_陆沙的博客-CSDN博客 https://blog.csdn.net/pxy7896/category_12704205.html 最近重启ASP.NET项目,在使用sql server导出和导入数据时遇到一些问题,特…

Facebook封号原因分析及解决办法

在当今数字化时代,社交媒体成为了人们交流和分享信息的重要平台。Facebook作为全球最大的社交网络之一,用户数量庞大,但在使用过程中,部分用户因网络问题而遭遇封号的情况时有发生。本文将探讨因网络问题导致Facebook封号的原因及…

13.2 Linux_网络编程_UNIX域套接字

概述 什么是UNIX域套接字: UNIX域套接字是使用套接字进行本地通信,TCP/UDP是使用套接字进行网络通信。UNIX域套接字也有域流式套接字和域数据报套接字,这两种形式域TCP/UDP的含义类似,使用步骤也完全一致。 bind时绑定的结构体…

pycharm中使用ctrl+鼠标滚轮改变字体大小

文章目录 pycharm使用ctrl鼠标滚轮改变字体大小1.打开pycharm选择file2.选择setting4.选择keymap,然后再右边的输入框中输入increase进行增大字体4.鼠标选择后,点击添加鼠标快捷方式,然后设置鼠标滚轮往上增大字体。5.设置缩小字体&#xff0…

Github 2024-10-14开源项目周报Top14

根据Github Trendings的统计,本周(2024-10-14统计)共有14个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目7C++项目2C项目2Swift项目1Jupyter Notebook项目1Java项目1Rust项目1Python中的算法实现集合 创建周期:2831 天开发语言:Python协议…