题目截图如下:
题目分析一:
从前到后的扫描数组,用K记录元素值为val的个数,对于当前扫面的元素,其值若不等于val,则进行向前移动k个位置,否则执行K++;
class Solution {
public int removeElement(int[] nums, int val) {
int k = 0;
for (int i = 0; i < nums.length; i++) {
if(nums[i]==val){
k++;
}else {
nums[i-k] = nums[i];
}
}
return nums.length - k;
}
}
题目分析二:
可以先对数组进行排序,然后遍历数组,对于当前的值,如果不等于val,则将这个值赋值给新的的新的长度K,新的长的K++,否则什么都不做,直到循环结束。
class Solution {
public int removeElement(int[] nums, int val) {
int k = 0;
Arrays.sort(nums);
for (int i = 0; i < nums.length; i++) {
if (nums[i] != val){
nums[k] = nums[i];
k++;
}
}
return k;
}
}