leetcode hot100 环形链表2

142. 环形链表 II

已解答

中等

相关标签

相关企业

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

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

不允许修改链表。

Definition for singly-linked list.

class ListNode(object):

def init(self, x):

self.val = x

self.next = None

class Solution(object):

def detectCycle(self, head):

"""

:type head: ListNode

:rtype: ListNode

"""

seen =set()

p=head

while p!=None:

if p in seen:

return p

else:

seen.add(p)

p=p.next

return None

"""

如何用空间复杂度1实现

"""

快慢指针可以吗

fast ,slow =head,head

while True:

if not (fast and fast.next): return

fast , slow = fast.next.next, slow.next

if fast==slow: break

fast = head

while fast!=slow:

fast,slow =fast.next,slow.next

return fast

这里是两种方法,第二种 快慢指针,非常男想到啊,需要列出公式,然后推理得到,在快慢指针相遇之后,在经过环外面的路径的长度的话,会到达相交节点

相关推荐
写个博客6 分钟前
代码随想录算法训练营第三十九天
算法
源码方舟1 小时前
【基于ALS模型的教育视频推荐系统(Java实现)】
java·python·算法·音视频
fancy1661662 小时前
力扣top100 矩阵置零
人工智能·算法·矩阵
小南家的青蛙2 小时前
LeetCode面试题 01.09 字符串轮转
java·leetcode
kedvellek2 小时前
Linux 内核链表宏的详细解释
linux·运维·链表
元亓亓亓2 小时前
LeetCode热题100--240.搜索二维矩阵--中等
算法·leetcode·矩阵
lybugproducer3 小时前
浅谈 Redis 数据类型
java·数据库·redis·后端·链表·缓存
明月看潮生3 小时前
青少年编程与数学 02-019 Rust 编程基础 09课题、流程控制
开发语言·算法·青少年编程·rust·编程与数学
oioihoii3 小时前
C++23 views::slide (P2442R1) 深入解析
linux·算法·c++23
yuhao__z4 小时前
代码随想录算法训练营第六十三天| 图论9—卡码网47. 参加科学大会,94. 城市间货物运输 I
算法·图论