MUYANG GUO / INDEX

LeetCode

LeetCode 19 Remove Nth Node From End Of List - Medium

19. Remove Nth Node From End of List

·1 min read·#LeetCode#Medium#Python

19. Remove Nth Node From End Of List — Medium

Open on LeetCode

Problem

  1. Remove Nth Node From End of List

Given a linked list, remove the n-th node from the end of list and return its head.

Example:

Given linked list: 1->2->3->4->5, and n = 2.

After removing the second node from the end, the linked list becomes 1->2->3->5. Note:

Given n will always be valid.

Follow up:

Could you do this in one pass?

Solution

# 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: ListNode, n: int) -> ListNode:
        dummy = ListNode(None, head)
        slow, fast = dummy, dummy
        distance = 0
        while fast and distance < n + 1:
            fast = fast.next
            distance += 1
        while fast:
            fast = fast.next
            slow = slow.next
        slow.next = slow.next.next
        return dummy.next

Comments