思路:直接用双指针(快慢指针里进行覆盖值)
当前遍历到的值与目标值不同的时候就进行快指针对慢指针进行覆盖,最后返回慢指针的下标即可。
class Solution {
//原地删除元素就要用双指针法(快慢指针)
public int removeElement(int[] nums, int val) {
//定义一个慢指针
int i = 0;
for(int j=0;j<nums.length;j++){
//如果当前遍历值与目标值不相同就覆盖慢指针的位置的值
if(nums[j]!=val){
nums[i++] = nums[j];
}
}
//最后返回慢指针的下标就是整个结果数组的长度
return i;
}
}
时间复杂度:O(n)
空间复杂度: O(1)
本文章只做笔记用途,谢谢观看!
参考:代码随想录