ListNode* removeNthFromEnd(ListNode* head, int n) {
int length = 0;
for (ListNode* node = head; node; node = node->next) length++;
if (n == length) return head->next;
ListNode* node = head;
for (int i = 0; i < length - n - 1; i++) node = node->next;
node->next = node->next->next;
return head;
}
public ListNode removeNthFromEnd(ListNode head, int n) {
int length = 0;
for (ListNode node = head; node != null; node = node.next) length++;
if (n == length) return head.next;
ListNode node = head;
for (int i = 0; i < length - n - 1; i++) node = node.next;
node.next = node.next.next;
return head;
}
def remove_nth_from_end(head, n):
length = 0
node = head
while node:
length += 1
node = node.next
if n == length:
return head.next
node = head
for _ in range(length - n - 1):
node = node.next
node.next = node.next.next
return head
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
let length = 0;
for (let node = head; node; node = node.next) length++;
if (n === length) return head!.next;
let node = head!;
for (let i = 0; i < length - n - 1; i++) node = node.next!;
node.next = node.next!.next;
return head;
}
ListNode* removeNthFromEnd(ListNode* head, int n) {
vector<ListNode*> nodes;
for (ListNode* node = head; node; node = node->next) nodes.push_back(node);
int idx = (int)nodes.size() - n;
if (idx == 0) return head->next;
nodes[idx - 1]->next = nodes[idx]->next;
return head;
}
public ListNode removeNthFromEnd(ListNode head, int n) {
List<ListNode> nodes = new ArrayList<>();
for (ListNode node = head; node != null; node = node.next) nodes.add(node);
int idx = nodes.size() - n;
if (idx == 0) return head.next;
nodes.get(idx - 1).next = nodes.get(idx).next;
return head;
}
def remove_nth_from_end(head, n):
nodes = []
node = head
while node:
nodes.append(node)
node = node.next
idx = len(nodes) - n
if idx == 0:
return head.next
nodes[idx - 1].next = nodes[idx].next
return head
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
const nodes: ListNode[] = [];
for (let node = head; node; node = node.next) nodes.push(node);
const idx = nodes.length - n;
if (idx === 0) return head!.next;
nodes[idx - 1].next = nodes[idx].next;
return head;
}
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode dummy(0, head);
ListNode* fast = &dummy;
ListNode* slow = &dummy;
for (int i = 0; i < n; i++) fast = fast->next;
while (fast->next) {
fast = fast->next;
slow = slow->next;
}
slow->next = slow->next->next;
return dummy.next;
}
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummy = new ListNode(0, head);
ListNode fast = dummy;
ListNode slow = dummy;
for (int i = 0; i < n; i++) fast = fast.next;
while (fast.next != null) {
fast = fast.next;
slow = slow.next;
}
slow.next = slow.next.next;
return dummy.next;
}
def remove_nth_from_end(head, n):
dummy = ListNode(0, head)
fast = dummy
slow = dummy
for _ in range(n):
fast = fast.next
while fast.next:
fast = fast.next
slow = slow.next
slow.next = slow.next.next
return dummy.next
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
const dummy = new ListNode(0, head);
let fast: ListNode | null = dummy;
let slow: ListNode = dummy;
for (let i = 0; i < n; i++) fast = fast!.next;
while (fast!.next) {
fast = fast!.next;
slow = slow.next!;
}
slow.next = slow.next!.next;
return dummy.next;
}
ListNode* removeNthFromEnd(ListNode* head, int n) {
if (!head || n < 1) return head;
ListNode dummy(0, head);
ListNode* lead = &dummy;
for (int i = 0; i < n; i++) {
lead = lead->next;
if (!lead) return head;
}
ListNode* trail = &dummy;
while (lead->next) {
lead = lead->next;
trail = trail->next;
}
ListNode* removed = trail->next;
trail->next = removed->next;
removed->next = nullptr;
delete removed;
return dummy.next;
}
public ListNode removeNthFromEnd(ListNode head, int n) {
if (head == null || n < 1) return head;
ListNode dummy = new ListNode(0, head);
ListNode lead = dummy;
for (int i = 0; i < n; i++) {
lead = lead.next;
if (lead == null) return head;
}
ListNode trail = dummy;
while (lead.next != null) {
lead = lead.next;
trail = trail.next;
}
ListNode removed = trail.next;
trail.next = removed.next;
removed.next = null;
return dummy.next;
}
def remove_nth_from_end(head, n):
if not head or n < 1:
return head
dummy = ListNode(0, head)
lead = dummy
for _ in range(n):
lead = lead.next
if not lead:
return head
trail = dummy
while lead.next:
lead = lead.next
trail = trail.next
removed = trail.next
trail.next = removed.next
removed.next = None
return dummy.next
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
if (!head || n < 1) return head;
const dummy = new ListNode(0, head);
let lead: ListNode | null = dummy;
for (let i = 0; i < n; i++) {
lead = lead.next;
if (!lead) return head;
}
let trail = dummy;
while (lead.next) {
lead = lead.next;
trail = trail.next!;
}
const removed = trail.next!;
trail.next = removed.next;
removed.next = null;
return dummy.next;
}