解题思路:
1 最直接的,对数组内等于val的值进行处理,令其后的元素依次覆盖它,直到数组尾。
2 反向思维,反正都要遍历一遍数组,直接将不等于val的元素覆盖掉数组内的元素,并记录长度值即可。
代码(直接):
class Solution {
public int removeElement(int[] nums, int val) {
int length = nums.length;
for (int i = 0;i < length;i++){
if (nums[i] == val){
length--;
for (int j = i;j < nums.length - 1;j++){
nums[j] = nums[j+1];
}
i--;
}
}
return length;
}
}
代码(反向):
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];
i++;
}
}
return i;
}
}