题意: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
说明:不允许修改给定的链表。
一开始我是这么写的
# 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
"""
dummy_head = ListNode(next=head)
fast = dummy_head.next.next
slow = dummy_head
len = 0
while fast and slow:
if fast == slow :
return fast
fast = fast.next.next
print(fast.val)
slow = slow.next
print(slow.val)
len += 1
return null
结果是:
# 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
"""
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
这种思路太难想了
看了代码随想录的视频
文章来源:https://www.toymoban.com/news/detail-574087.html
文章来源地址https://www.toymoban.com/news/detail-574087.html
到了这里,关于【Leetcode】142.环形链表II的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!