给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
public static int removeElement(int[] nums, int val) {
//首先理清思路,采用双指针的方法在原有的数组上进行重新排序
int pre=0; //前指针进行排序,始终是正确队列的尾指针
//后指针需要进行遍历来对比判断
for (int i = 0; i <nums.length ; i++) {
if(nums[i]!=val)//后指针与替换对象对比
{
nums[pre]=nums[i];//后指针对比后,不相等就代表要提前,赋值给前指针
pre++;//前指针后移,因为已经被赋值
}
}
return pre;
}
双指针进行操作数组,前指针进行排序,为正确序列的尾指针,后指针为遍历指针,进行遍历数组进行比较数组的每一个数;