思路:
- 左指针从0,右指针从尾开始
- 循环结束条件:left <= right
- 处理过程:
-
左指针的值等于val,右指针的值覆盖上来,右指针--;【此处,右指针覆盖上来的值可能也等于val,所以left还不能++,加了就意味着忽略了要移除的值】
-
不等于val,左指针右移
-
最后返回左指针
代码:
java
class Solution{
public int removeElement(int[] nums, int val){
int left = 0;
int right = nums.length -1;
while(left <= right){
if(nums[left] == val){
nums[left] = nums[right];
right--;
}
else{
left++;
}
}
return left;
}
}