1,题目
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
2,代码
**双指针**
int removeDuplicates(int* nums, int numsSize){
int j = numsSize;
if (j > 1){
j = 1;
for (int i = 1; i < numsSize; i++) {
if (nums[i] = nums[i - 1]){
continue;
}else{
nums[j] = nums[i];
j++;
}
}
}
return j;
}
复杂度分析
时间复杂度:O(n),其中 n 是数组的长度。快指针和慢指针最多各移动 n 次。
空间复杂度:O(1)。只需要使用常数的额外空间。