# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
virtualHead = ListNode()
virtualHead.next = head
left = right = virtualHead
while n+1>0:
right = right.next
n -= 1
while right != None:
right = right.next
left = left.next
left.next = left.next.next
return virtualHead.next
# 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]:
left = right = head
while right and right.next: # right不为None,right.next也不为None
left = left.next
right = right.next.next
if left == right:
left = head
while left != right:
left = left.next
right = right.next
return left
return None