//快慢指针是采用 俩个指针,同步进行移动查找。fast找到满足条件的值时,移动较slow块。
//同向移动
public int removeElement(int[] nums, int val) {
int slow=0;
for (int fast=0;fast<nums.length;fast++){
if (nums[fast]!=val){
//将后面的值前移。
nums[slow]=nums[fast];
slow++;
}
}
return slow;
}
//相向移动
public int removeElement2(int[] nums, int val) {
int slow=0;
int fast=nums.length-1;
while (slow<=fast){
//这里一定要加等于,让slow指针移动到变换之后的数组最后一位。
while (slow<=fast&&nums[slow]!=val){
slow++;
}
while (slow<=fast&&nums[fast]==val){
fast--;
}
if (slow<fast){
nums[slow]=nums[fast];
slow++;
fast++;
}
}
return slow;
}