0026. 删除有序数组中的重复项 Remove Duplicates from Sorted Array
要注意的一点是, 这个数组已经是有序的了.
方法1, 快慢型双指针法
快慢型双指针法的详细说明, 可以参考这里.
#![allow(unused)] fn main() { // 快慢型双指针 Two pointers #[allow(clippy::ptr_arg)] pub fn remove_duplicates2(nums: &mut Vec<i32>) -> i32 { assert!(!nums.is_empty()); // 第一个指针, 用于记录当前不重复的位置 let mut slow_idx = 1; // 第二个指针, 用于遍历数组 for fast_idx in 1..nums.len() { if nums[fast_idx - 1] != nums[fast_idx] { nums[slow_idx] = nums[fast_idx]; slow_idx += 1; } } slow_idx as i32 } }
方法2, 使用 Vec 自带的去重方法
Vec::dedup()
就是用来去重的, 如果它已经是排序的了, 可以去掉所有重复元素.
#![allow(unused)] fn main() { // Vec 的去重函数, 支持已排序的 pub fn remove_duplicates3(nums: &mut Vec<i32>) -> i32 { nums.dedup(); nums.len() as i32 } }