Skip to main content
Back to problems
#82
Medium Algorithms

Remove duplicates from sorted list ii

Linked List Two Pointers
51.3% acceptance
Jan 12, 2026
9625
281
Given the head of a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. Return the linked list sorted as well.

Solution

Rust
Time O(n²)
Space O(1)
LeetCode
solution.rs
impl Solution {
  pub fn delete_duplicates(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
    let mut dummy = Box::new(ListNode::new(0));
    dummy.next = head;
    let mut prev = &mut dummy;
    
    while let Some(node) = prev.next.as_mut() {
      let val = node.val;
      
      if node.next.as_ref().map_or(false, |n| n.val == val) {
        while prev.next.as_ref().map_or(false, |n| n.val == val) {
          prev.next = prev.next.as_mut().unwrap().next.take();
        }
      } else {
        prev = prev.next.as_mut().unwrap();
      }
    }
    
    dummy.next
  }
}