题意:把数组中与给定值相同的元素删除,在原数组上修改,返回值是最终元素个数。
例如:nums = [3,2,2,3], val = 3 将val=3删除完以后,最终元素个数为2,返回2。
思路:用一个索引i记录不含给定数字的数组边界,另一个索引j记录当前遍历到的数组位置。只有nums[j] != val时,才会赋值nums[i] = nums[j]。
复杂度:时间 O(N) 空间 O(1)
public class Solution {
public static int removeElement(int[] nums, int val) {
int i = 0;
for(int j = 0; j < nums.length; j++){
if(nums[j] != val){
nums[i] = nums[j];
i++;
}
}
return i;
}
public static void main(String[] args) {
int[] nums = {2,3,3,2};
System.out.println(removeElement(nums, 3));
}
}