题目:
算法思想:
方法一:
找出每个元素前面有几个需要删除的数,当前元素就需要往前移多少位。
class Solution {
public int removeElement(int[] nums, int val) {
int k = 0;
int len = nums.length;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == val) {
k++;
len--;
continue;
}
nums[i - k] = nums[i];
}
return len;
}
}
方法二:快慢指针
class Solution {
public int removeElement(int[] nums, int val) {
// 快慢指针
int slowIndex = 0;
for (int fastIndex = 0; fastIndex < nums.length; fastIndex++) {
if (nums[fastIndex] != val) {
nums[slowIndex] = nums[fastIndex];
slowIndex++;
}
}
return slowIndex;
}
}