1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#![allow(dead_code)] pub fn remove_duplicates(nums: &mut Vec<i32>) -> i32 { if nums.len() == 0 || nums.len() == 1 { return nums.len() as i32; } let mut count = 0; for i in 0..nums.len() - 1 { if nums[i] != nums[i + 1] { count += 1; nums[count] = nums[i + 1]; } } count as i32 + 1 } #[cfg(test)] mod tests { use super::*; #[test] fn test1() { let mut nums = vec![1, 1, 2]; assert_eq!(remove_duplicates(&mut nums), 2); let mut nums = vec![0, 0, 1, 1, 1, 2, 2, 3, 3, 4]; assert_eq!(remove_duplicates(&mut nums), 5); } }