双指针
:left
指针指向不包含该元素的数组尾部,right
指向正在遍历的数组的初始,若发现·value
值则将right
移动跳过该值,否则将right出元素赋值给left处元素
package KTwoPointers;
import java.util.Arrays;
/**
* @Author Zhou jian
* @Date 2020 ${month} 2020/5/3 0003 23:29
*/
public class Problem27 {
public int removeElement(int[] nums, int val) {
//在数组中找到这个位置,使用快慢指针法
//left指向 不包含某个元素的末尾,
//left初始的时候为-1
int left = -1;
//right指向可能包含某个元素的首部
int right =0;
while(right<nums.length){
//包含某个元素,则跳过这个元素
if(nums[right]==val) right++;
else{//当前元素不包含该元素
left++;
nums[left]=nums[right];
right++;
}
}
return left+1;
}
}