#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)
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
}
}