当前位置: 首页 > news >正文

​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 <= 105
  • pos 的值为 -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;}

http://www.lryc.cn/news/105607.html

相关文章:

  • 危化品行业防雷检测综合解决方案
  • 刷题笔记:day 1
  • Linux——平台设备及其驱动
  • 【C语言技巧】三种多组输入的写法
  • DB2数据库巡检脚本
  • Eureka 学习笔记3:EurekaHttpClient
  • Android Framework 之 启动流程
  • Qt、C/C++环境中内嵌LUA脚本、实现LUA函数的调用执行
  • 超详细 | 模拟退火算法及其MATLAB实现
  • 在线餐饮油烟实时监测系统的设计与实现
  • 7-2 凯撒密码 (20分)
  • LeetCode_贪心算法_中等_763.划分字母区间
  • 【算法提高:动态规划】1.5 状态压缩DP TODO
  • 建网站一般使用Windows还是liunx好?
  • NodeJs后端项目使用docker打包部署
  • ARM单片机中断处理过程解析
  • 关于SEDEX会员与平台的相关问题汇总
  • 解读Spring-context的property-placeholder
  • 【Rust】枚举类型创建单链表以及常见的链表操作方法
  • Excel 两列数据中相同的数据进行同行显示
  • Windows本地安装配置Qcadoo MES系统
  • 涛思数据与拾贝云达成战略合作,携手赋能工业数字化转型
  • nginx 配置多域名多站点 Ubuntu
  • Docker实践:使用Docker搭建个人开发环境(极简版)
  • SQL从三个表中根据时间分别查询并汇总数量一行展示
  • 同样是跨端框架,React会不会被VUE取代?
  • Excel·VBA定量装箱、凑数值金额、组合求和问题
  • 通过Jmeter压测存储过程
  • Spring笔记之Spring对IoC的实现
  • 【eNSP】Telnet远程登录