[Solved] Given the head of a linked list, remove the nth node from the end of the list and return its head.

Question

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

Example 1:

Machine Learning Projects
Input: head = [1,2,3,4,5], n = 2
Output: [1,2,3,5]

Example 2:

Input: head = [1], n = 1
Output: []

Example 3:

Input: head = [1,2], n = 1
Output: [1]

Constraints:

  • The number of nodes in the list is sz.
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

Follow up: Could you do this in one pass?

Python 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:
        p1 = head
        p2 = head
        
        for _ in range(n):
            if p2:
                p2 = p2.next
            else:
                break
        
        if p2==None:
            return head.next
        
        while p2.next:
            p1 = p1.next
            p2 = p2.next
        
        p1.next = p1.next.next
        return head
Abhishek Sharma
Abhishek Sharma

Started my Data Science journey in my 2nd year of college and since then continuously into it because of the magical powers of ML and continuously doing projects in almost every domain of AI like ML, DL, CV, NLP.

Articles: 514

Leave a Reply

Your email address will not be published. Required fields are marked *