use std::collections::HashMap;
pub fn delete_nth_naive(list: &[i32], max_occurence: usize) -> Result<Vec<i32>,String> {
if list.is_empty() {
return Err("Cannot delete nth element of an empty list!".to_string());
}
let mut result: Vec<i32> = vec![];
for &element in list {
let occurence = result.iter().filter(|&&x| x == element).count();
if occurence < max_occurence {
result.push(element);
}
}
Ok(result)
}
pub fn delete_nth(list: &[i32], max_occurence: usize) -> Result<Vec<i32>,String> {
if list.is_empty() {
return Err("Cannot delete nth element of an empty list!".to_string());
}
let mut result = Vec::new();
let mut counts = HashMap::new();
for &element in list {
let occurence = counts.entry(element).or_insert(0);
if *occurence < max_occurence {
result.push(element);
*occurence += 1;
}
}
Ok(result)
}