27. 移除元素 - 力扣(LeetCode)
思路
数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。
解法
两层for循环,一个for循环遍历数组元素 ,第二个for循环更新数组。
注意点
-
第一个for循环遍历数组元素
-
第二个for循环,当发现符合要求的数组元素的位置后,执行该元素之后的所有原因的位置往前移动一位
-
i--,因为发现需要删除的元素后,将该元素的下一个元素向前移动一位,即覆盖了待删除元素,此时i对应的索引下标存放的元素是待删除元素的下一位值的元素(该元素是否也是待删除元素,也是需要判断的)
-
count++,计算数组长度,每删除一个元素,数组长度-1
int removeElement(int* nums, int numsSize, int val){
int count=numsSize;
for(int i=0;i<numsSize;i++){
if(nums[i]==val){
for(int j=i+1;j<numsSize;j++){
nums[j-1]=nums[j];
}
count--;
i--;
}
}
return count;
}