思路
同向双指针。如果没遇到给定的val,就让nums[index]=nums[i],其中index为指示当前可覆盖位置的指针(慢指针),i为遍历整个数组所用的指针(快指针)。如果遇到了,就只移动i指针,直到遇到的不是val。
复杂度
时间复杂度O(n), 空间复杂度O(1)
代码
class Solution {
public int removeElement(int[] nums, int val) {
if(nums.length == 0)
return 0;
int index = 0;
for(int i = 0; i < nums.length; i++) {
if(nums[i] != val) {
nums[index] = nums[i];
index++;
}
}
return index;
}
}