Удалить N-й узел из конца списка (Leetcode)? - Python - PullRequest
0 голосов
/ 05 мая 2020

Ссылка - https://leetcode.com/problems/remove-nth-node-from-end-of-list/

Мой подход:

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        h = head
        td = h

        c = 0
        while head.next is not None:
            c+=1
            print(c,n)
            if c>n:
                td = td.next
            head = head.next
        if c + 1 != n:
            td.next = td.next.next
        return h

Он не работает в пограничных случаях, таких как, [1,2] и n = 2, любые способ изменить это так, чтобы это работало для всех пограничных случаев и было принято? (Я знаю, что мы можем решить эту проблему, используя медленные и быстрые указатели)

1 Ответ

0 голосов
/ 02 июля 2020

Я опубликовал альтернативное решение на случай, если вы заинтересованы.

class Solution:
    def removeNthFromEnd(self, head, n):
        fast = slow = head
        for _ in range(n):
            fast = fast.next
        if not fast:
            return head.next
        while fast.next:
            fast = fast.next
            slow = slow.next
        slow.next = slow.next.next
        return head

Надеюсь, это поможет.

Спасибо,

Issei

...