1. 原地移除元素
给定一个数组 nums
和一个值 val
,原地移除所有数值等于 val 的元素,并返回移除后数组的新长度,leetcode 链接
不要使用额外的数组空间,必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变,不需要考虑原数组中超出新长度后面的元素
2. 解法
使用双指针遍历目标数组,慢指针只在 nums[i] != val 的时候才向前移动,并将快指针指向的元素赋值到慢指针位置,最终返回慢指针指向的下标位置即为新数组长度
public int removeElement(int[] nums, int val) {
if (null == nums || 0 == nums.length) {
return 0;
}
int slowIndex = 0;
for (int i = 0; i < nums.length; i++) {
if (val != nums[i]) {
nums[slowIndex++] = nums[i];
}
}
return slowIndex;
}