问题描述
分析
双指针,first指针为结果指针,next指针为操作元素指针 如果nums[next]不等于val的话就说明这是不需要删除的元素,那么将它赋值给nums[first], 然后first与next指针同时向后移动 如果nums[next]等于val则next向后移动,first原地不动 最终next将完整遍历一遍数组,将first返回便是移除指定元素后剩下的元素长度
代码实现
class Solution {
public int removeElement(int[] nums, int val) {
if (nums.length == 0) return 0;
int first = 0,next = 0;
while(next < nums.length) {
if (nums[next] != val)
nums[first++] = nums[next];
next++;
}
return first;
}
}