题目介绍:
逻辑实现:
用两个下标 第一个下标src为第二个元素 第二个下标dst为第一个元素
而后 当src==src-1时,src++,指向下一个元素 ,dst不动,如果不等于时候 把src-1的值赋值给dst 尔后两者++
注意:当dst指向最后一个元素时候 不管两下标相等不相等,都无法按之前逻辑实现 ,这时候需要单独拿出来处理
直接把dst的值放到numsSize-1或者 src-1位置
dst是最后一个数据的下一个位置的下标,也就是代表整个数组的长度
逻辑图:
代码实现:
int removeDuplicates(int* nums, int numsSize){int src=1,dst=0;while(src<numsSize){if(nums[src]==nums[src-1]){src++;}else{nums[dst]=nums[src-1];src++;dst++;}}nums[dst]=nums[numsSize-1];dst++;return dst;}