As the sun begins to retreat,so autumn arrives
题目描述
给你一个数组
nums和一个值val,你需要 [原地] 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并 [原地 ]修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
题解
同 #26 删除有序数组中的重复项 类似
代码
public int removeElement(int[] nums, int val) {
int length = nums.length;
if (length == 0) {
return 0;
} else {
int i = 0;
for (int j = 0; j < length; j++) {
if (nums[j] != val) {
nums[i] = nums[j];
i++;
}
}
return i;
}
}
总结
与26题相似,都是利用自身数组和两个下标进行比较和运算。