题目描述
题目分析
- 这道题就是要将给定的数组内的某个指定元素删除掉,然后返回删除某个指定元素之后的新数组长度
- 而且只能在原数组进行改动,不能创建新的数组
解法分析
- 逐个判断,如果跟指定的元素相等,就删除该元素
- 删除时可以采用
元素左移(适用于数组元素较少时)
,也可以用双指针法(一个指向遍历的元素,一个指向当前要被覆盖的元素位置)
代码
- 双指针
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;
}
}
- 还有一种官方解法,
把尾部的元素用来填充需要删除的元素位置
,适用于元素很少时