暴力解法
——当遇到目标值时,将后面的的覆盖前面的,一个for循环遍历数组元素 ,第二个for循环更新数组。
int removeElement(int* nums, int numsSize, int val) {
for(int i = 0; i < numsSize; i++){
if(nums[i] == val){
for(int j = i + 1; j < numsSize; j++){
nums[j - 1] = nums[j];
}
i--;
numsSize--;
}
}
return numsSize;
}
双指针
通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
int removeElement(int* nums, int numsSize, int val) {
int slow = 0;
for(int fast = 0; fast <numsSize; fast++){
if(nums[fast] != val)
nums[slow++] = nums[fast];
}
return slow;
}