26. 删除排序数组中的重复项[1]
难度: 简单
老的描述:

新的描述:

注意是 排序数组,非严格递增排列,即已经是排好序的,只不过有重复元素
func removeDuplicates(nums []int) int {
if len(nums) == 0 {
return 0
}
i := 0
for j := 1; j < len(nums); j++ {
// 判断是否为重复元素
if nums[j]!= nums[i] {
i++
nums[i] = nums[j]
}
}
return i + 1
}

Rust版本:
fn main() {
let mut nums = vec![1, 1, 2, 3, 3];
// let mut nums= vec![0,0,1,1,1,2,2,3,3,4];
let len = remove_duplicates(&mut nums);
println!("去重后vec的长度为: {:?}", len); // 输出: 3
}
fn remove_duplicates(nums: &mut Vec<i32>) -> usize {
if nums.is_empty() {
return 0;
}
let mut i = 0;
for j in 1..nums.len() {
if nums[j] != nums[i] {
i += 1;
nums[i] = nums[j];
}
}
i + 1
}

remove_duplicates 函数使用双指针的方法来原地删除重复元素。指针 i 指向当前已处理的非重复元素的最后一个位置,指针 j 用于遍历数组。如果 nums[j] 与 nums[i] 不相等,则将 nums[j] 移到 nums[i+1] 的位置,并将 i 向前移动一步。最后返回 i+1,即为删除重复元素后的新长度。
参考资料
26. 删除排序数组中的重复项: https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
本文由 mdnice 多平台发布