Remove Nth node from the back of the LL
The problem
Given the head of a singly linked list and an integer n. Remove the nth node from the back of the linked List and return the head of the modified list. The value of n will always be less than or equal to the number of nodes in the linked list.
Input: linkedList = 1 -> 2 -> 3 -> 4 -> 5, n = 2 Output: 1 -> 2 -> 3 -> 5 Explanation: The 2nd node from the back was the node with value 4.
Input: linkedList = 5 -> 4 -> 3 -> 2 -> 1, n = 5 Output: 4 -> 3 -> 2 -> 1 Explanation: The 5th node from the back is the first node.
Input: linkedList = 9 -> 8 -> 7, n = 1
- 1 <= number of nodes in the Linked List <= 105
- 0 <= ListNode.val <= 104
- 1 <= n <= number of nodes in the Linked List.
cpp
/*
Definition of singly linked list:
struct ListNode
{
int val;
ListNode *next;
ListNode()
{
val = 0;
next = NULL;
}
ListNode(int data1)
{
val = data1;
next = NULL;
}
ListNode(int data1, ListNode *next1)
{
val = data1;
next = next1;
}
};
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
}
};java
/*Definition for Singly Linked List
class ListNode {
int val;
ListNode next;
ListNode() {
val = 0;
next = null;
}
ListNode(int data1) {
val = data1;
next = null;
}
ListNode(int data1, ListNode next1) {
val = data1;
next = next1;
}
}
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
}
}python
# 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, n):javascript
/*Definition for Singly Linked List
class ListNode {
constructor(val = 0, next = null) {
this.val = val;
this.next = next;
}
}
*/
class Solution {
removeNthFromEnd(head, n) {
}
}csharp
/*
Definition for Singly Linked List
public class ListNode {
public int val;
public ListNode next;
public ListNode(int val=0, ListNode next=null) {
this.val = val;
this.next = next;
}
}
*/
public class Solution {
public ListNode RemoveNthFromEnd(ListNode head, int n) {
}
}go
func removeNthFromEnd(head *ListNode, n int) *ListNode {
}Stuck? Show a way to structure it+
- 01Add a dummy before head
- 02Advance fast by n+1 nodes with input validation
- 03Move both pointers until fast is null
- 04Bypass slow.next and return dummy.next
Reference answer
Then expect these follow-ups
How would you do this with a length pass?
Tests: follow-up reasoning
Why does the dummy simplify head deletion?
Tests: correctness reasoning
Hiring now
Software engineer roles are open right now
landed applies to roles like these for you, on each company’s own site, with answers written for the role.

Senior Software Engineer -.NET
Tyler Technologies · Annapolis, Maryland

Software Development Engineer II
SaaS Labs · Bengaluru, Karnataka, India

Advanced Software Engineer - Product Architect (Legal, Safety, and Risk)
Metropolitan Transportation Authority · New York, NY
Next question