leetcode 19. チェーンテーブルの最後からN番目のノードを削除します(python 3)


19.チェーンテーブルの最後からN番目のノードに与えられたチェーンテーブルを削除し、チェーンテーブルの最後からn番目のノードを削除し、チェーンテーブルのヘッダノードに戻る.
例:
チェーンテーブルが与えられる:1->2->3->4->5、およびn=2.
最後から2番目のノードを削除すると、チェーンテーブルは1->2->3->5になります.説明:
与えられたn保証は有効である.
ステップ:
スキャンを使って実現してみてもいいですか?
考え方:スナップポインタ
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        slow = fast = head
        for i in range(n):  #      N 
            fast = fast.next 
        if fast is None:#     n         
            return head.next
        while fast.next: #          
            fast = fast.next
            slow = slow.next  
        slow.next = slow.next.next  #     N   
        return head