19. Remove Nth Node From End of List

2019-03-29

19. 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:

1
2
3
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?

Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 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:
self.next, nodelist = head, [self]
while head.next:
if len(nodelist) == n:
nodelist.pop(0)
nodelist += head,
head = head.next
nodelist[0].next = nodelist[0].next.next
return self.next
-->