题目描述
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
方法:双指针
思路:
设置两个指针:
指针right遍历查询数组内容
指针left复制right所查询到的符合条件的内容
代码:
java
.
class Solution {
public int removeElement(int[] nums, int val) {
int length =nums.length;
int right = 0;
int left = 0;
for(right = 0;right<length;right++)
{
if(nums[right]!=val)
{
nums[left]=nums[right];
left++;
}
}
return left;
}
}
总结:
在双指针中,只有一个指针是主动循环(本次设定的是right),另一个指针是在right指针满足条件的情况下才带动他改变位置。