R2-快慢指针(双指针中的子问题)。
k神
这类链表题目一般都是使用双指针法解决的,例如寻找距离尾部第 K
个节点、寻找环入口、寻找公共尾部入口等。
在本题的求解过程中,双指针会产生两次“相遇”。
抽象,太抽象了。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def detectCycle(self, head: Optional[ListNode]) -> Optional[ListNode]:
fast=head
slow=head
while True:
if not (fast and fast.next):
return
fast=fast.next.next
slow=slow.next
#第一次相遇
if fast==slow:
break
fast=head
while fast!=slow:
fast=fast.next
slow=slow.next
#第二次相遇,(a)就是结果
return fast
ps:
反应不过来,下播!