用双指针的方式,左边保持不动, 与右边相比较:
如果一样, 右边++
如果不一样, 那么左边index++, 并将右边的值赋值给左边, 同时, 右边++。
int removeDuplicates(int* nums, int numsSize){
if (numsSize <= 1) return numsSize;
int index = 0;
int right = 1;
while (index < numsSize && right < numsSize) {
if (nums[index] != nums[right]) {
nums[++index] = nums[right];
}
right++;
}
return index + 1;
}
执行用时:28 ms, 在所有 C 提交中击败了47.96%的用户
内存消耗:8.4 MB, 在所有 C 提交中击败了29.86%的用户