思路:双指针
class Solution {
public int removeElement(int[] nums, int val) {
//双指针
int j=0;
for(int i=0;i<nums.length;i++){
if(nums[i]!=val){
nums[j]=nums[i];
j++;
}
}
return j;
}
}
优化;
双指针优化
如果要移除的元素恰好在数组的开头,我们需要把每一个元素都左移一位。注意到题目中说:「元素的顺序可以改变」。
class Solution {
public int removeElement(int[] nums, int val) {
//双指针优化
//如果要移除的元素恰好在数组的开头,我们需要把每一个元素都左移一位。注意到题目中说:「元素的顺序可以改变」。
int l=0;
int r=nums.length-1;
while(l<r){
if(nums[l]==val){
nums[l]=nums[r];
r--;
}else{
l++;
}
}
return l+1;
}
}