Given a array, remove the duplicates in place such that each element appear only tiwce
and return the new length.
For example, Given sorted array A = [1,1,1,2,2,3],
Your function should return length = 5, and A is now [1,1,2,2,3]
use std::collections::HashMap;
fn main() {
let mut vv = vec![2,1,1,2,2,5,2,3,3,4,4,5,5,5];
let data = remove_keep2(&mut vv);
println!("{:?},{}",vv,data);
}
fn remove_keep2(vv: &mut Vec<usize>) -> usize{
let mut map = HashMap::new();
let mut index = 0;
let len = vv.len();
for i in 0..len {
println!("i {:?}",i);
let key_exists = map.contains_key(&vv[i]);
if key_exists {
let val = map.get_mut(&vv[i]).unwrap();
if *val < 1 {
vv[index]=vv[i];
index += 1;
*val += 1;
}
}else{
map.entry(vv[i]).or_insert(0);
vv[index]=vv[i];
index += 1;
}
}
index
}