3.12 第27题 移除元素
题目
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
解答
思路:
双指针
public class Solution27 {
public static int removeElement(int[] nums,int val){
if(nums.length == 0 ||(nums.length == 1 && nums[0] != val)){
return nums.length;
}//if
else if(nums.length == 1 && nums[0] == val){
return 0;
}
int i = 0,j = 1;
if(val == nums[0])
i = -1;
while(j < nums.length){
if(val == nums[j]){
j++;
}
else{
i++;
nums[i] = nums[j];
j++;
}
}
return i+1;
}//remove
public static void main(String[] args){
int[] nums = {0,1,2,2,3,0,4,2};
int val = 2;
int num = removeElement(nums,val);
System.out.println(num);
}
}
知识点
无