环形链表很曼妙的一个做题思路

首先设置一个fast一个slow,每次fast移动2个next,slow每次一个

假设head到循环节点是a,循环长度是b+c,在b点slow和fast相遇

相遇这个时候有fast走过=2slow走过,2(a+b)=a+k(b+c)+b

平移得到a-c=(k-1)(b+c)

他们必然会在循环中碰到,碰到之后,slow和head每次加一,slow再运动c就到了循环的头头,这个时候head在a-c点再往后移动的同时slow也会循环一个一个的圈数,这个时候就会在循环的头头相遇,所以返回slow就可以,如果slow和fast永远不相碰就会是返回一个none

相关推荐
ambition2024217 小时前
斐波那契取模问题的深入分析:为什么提前取模是关键的
c语言·数据结构·c++·算法·图论
小肝一下18 小时前
每日两道力扣,day6
数据结构·c++·算法·leetcode·双指针·hot100
ByteCraze18 小时前
大四双非春招学习记录-K 个一组反转链表
数据结构·学习·链表
奶人五毛拉人一块19 小时前
模板与vector的学习
数据结构·学习·迭代器·vector·模板
ambition2024219 小时前
【算法详解】飞机降落问题:DFS剪枝解决调度问题
c语言·数据结构·c++·算法·深度优先·图搜索算法
I Promise3419 小时前
C++ 基础数据结构与 STL 容器详解
开发语言·数据结构·c++
旖-旎19 小时前
链表(两两交换链表中的节点)(2)
数据结构·c++·学习·算法·链表·力控
会编程的土豆20 小时前
【数据结构与算法】堆排序
开发语言·数据结构·c++·算法·leetcode
会编程的土豆20 小时前
【数据结构与算法】希尔排序
数据结构·c++·算法·排序算法
汀、人工智能20 小时前
[特殊字符] 第73课:打家劫舍
数据结构·算法·数据库架构·图论·bfs·打家劫舍