Skip to main content
Back to problems
#1474
Easy Algorithms

Delete n nodes after m nodes of a linked list

Linked List
74.4% acceptance
Mar 31, 2026
434
17

No description available.

Solution

Rust
Time O(n)
Space O(1)
LeetCode
solution.rs
impl Solution {
  pub fn delete_nodes(head: Option<Box<ListNode>>, m: i32, n: i32) -> Option<Box<ListNode>> {
    let mut dummy = Some(Box::new(ListNode { val: 0, next: head }));
    let mut curr = dummy.as_mut().unwrap().next.as_mut();
    'outer: loop {
      // Keep m nodes
      for _ in 1..m {
        if let Some(node) = curr {
          curr = node.next.as_mut();
        } else {
          break 'outer;
        }
      }
      // curr points to last kept node, now skip n nodes
      if let Some(node) = curr {
        let mut skip = &mut node.next;
        for _ in 0..n {
          if let Some(s) = skip {
            skip = &mut s.next;
          } else {
            break;
          }
        }
        let rest = skip.take();
        node.next = rest;
        curr = node.next.as_mut();
      } else {
        break;
      }
    }
    dummy.unwrap().next
  }
}