力扣C语言:删除排序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2gy9m/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
int removeDuplicates(int* nums, int numsSize){
int i = 0;
for(i = 0; i < numsSize; i++){
for(int j = i+1; j < numsSize; j++){
if(nums[i] == nums[j]){
//如果前后两个数相同,则将后边的数依次向前移动一格。
for(int m = j; m < numsSize-1; m++){
//循环里m=i;m=j都可实现前移。
nums[m] = nums[m+1];
}
numsSize--;//数组大小减1
j=i;//如果无此j=i;碰到111三个一样的情况就会漏掉一次,因为已经将后一个向前移动了,但是下标j还表示的在后一个,也就是数值需要将j重置一下。
}
}
}
return numsSize;
}