チェーンテーブルの最後からN番目のノードpython実装を削除

1037 ワード


チェーンテーブルの最後からN番目のノードを削除
チェーンテーブルが与えられ、チェーンテーブルの最後からn番目のノードが削除され、チェーンテーブルのヘッダノードが返される.
例:
      : 1->2->3->4->5,   n = 2.

            ,     1->2->3->5.

説明:
与えられたn保証は有効である.
ステップ:
スキャンを使って実現してみてもいいですか?
 
2つのチェーンテーブルが確立され、l 1は最初のノードからn番目のノードにアクセスし、その後、l 1とl 2は同時にスキャンされ、l 1がチェーンテーブルの最後にスキャンされると、l 2は最後からn番目のノードになる.
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def removeNthFromEnd(self, head, n):
        """
        :type head: ListNode
        :type n: int
        :rtype: ListNode
        """
    res = ListNode(0)
    res.next = head
    l1 = res
    l2 = res
    for i in range(n):
        l1 = l1.next
    while l1.next:
        l1 = l1.next
        l2 = l2.next
    l2.next = l2.next.next
    return res.next