26. 删除排序数组中的重复项
难度: 简单
老的描述:
新的描述:
注意是 排序数组,非严格递增排列,即已经是排好序的,只不过有重复元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| fn main() { let mut nums = vec![1, 1, 2, 3, 3]; let len = remove_duplicates(&mut nums); println!("去重后vec的长度为: {:?}", len); }
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,即为删除重复元素后的新长度。
原文链接: https://dashen.tech/2015/03/01/leetcode-26-删除排序数组中的重复项/
版权声明: 转载请注明出处.