给你一个有序数组 nums ,请原地删除重复出现的元素, 使每个元素只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条
给你一个有序数组 nums ,请原地删除重复出现的元素,
使每个元素只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组
并在使用 O(1) 额外空间的条件下完成
使用双指针,当慢指针和快指针的值相等时,慢指针不动,快指针向右移动一位;当慢指针和快指针的值相等时,慢指针向右移动一位,把快指针的值赋给慢指针的值,然后快指针再向右移动一位
public int removeDuplicates(int[] nums) {
if(nums.length == 0) return 0;
int i = 0;
for(int j = 1;j < nums.length;j++){
if(nums[j] != nums[i]){
i++;
nums[i] = nums[j];
}
}
return i + 1;
}