本题借鉴的是上一道题双指针的方法,我觉得两道题如果能结合起来看一定会有更好的理解。
解题思路
首先把长度为1的情况单独考虑,其他情况的处理办法,即让两个指针都指向第一个元素,然后慢指针同步更改数组数字,同时表示最终数组长度,快指针来判断对应的数字是否等于给定的值。
代码
class Solution {
public int removeElement(int[] nums, int val) {
if(nums.length==1){
if(nums[0]==val){
return 0;
}else{
return 1;
}
}
int slow=0;
int fast=0;
while(fast<nums.length){
if(nums[fast]==val){
fast++;
}else{
nums[slow]=nums[fast];
slow++;
fast++;
}
}
return slow;
}
}