原题链接 : 移除元素
这题… 这题和26题有虾米本质的区别吗…我是感觉没有…
思路也是双"指针", 刚开始时候快指针和慢指针指向开头, 判断条件为当快指针指向的值不等于给定值时, 慢指针和快指针后移 ; 如果快指针的值和给定值相等时, 慢指针不动, 快指针后移去寻找和需要删除的值不相等的, 然后走不相等的逻辑 . 所以这里不需要去判断相等了咋样, 只需要处理不相等时的逻辑即可.
参考代码如下 :
// 定义返回的数组长度
int res = 0;
// 处理边界情况
if (nums == null || nums.length == 0 ) return 0;
if (nums[0] == val && nums.length == 1 ) return 0 ;
// 进入循环处理
for (int i = 0 ; i < nums.length ; i ++ ){
// 当快指针的值和给定值不相等时
if (nums[i] != val){
// 赋值给慢指针
nums[res] = nums[i];
// 把慢指针向前移
res ++ ;
}
}
// 因为上面不等的时候已经做了加1 , 所以这里给到数组长度的时候不用再加了
return res;