问题原始链接 https://leetcode.com/problems/remove-element
给定一个数组合一个值,删除数组中所有与该值相等的元素,返回数组新的长度。
不要新建数组分配额外的空间,你必须只使用常量内存在原数组上进行操作。
可以改变数组中元素的顺序。不关心数组中超过新长度部分的内容。
例子:
给定输入数组 nums = [3,2,2,3], val = 3
你的方法需要返回 length = 2,nums 数组前两个元素都是 2。
public class Solution {
public static int removeElement(int[] nums, int val) {
if (nums == null || nums.length == 0) {
return 0;
}
int i = -1;
int j = nums.length - 1;
int count = 0;
while (i <= j) {
while (i < j && (i < 0 || nums[i] != val)) {
i++;
}
if (nums[i] == val) {
count++;
}
while (i < j && nums[j] == val) {
count++;
j--;
}
if (j != i) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
i++;
j--;
} else {
i++;
}
}
return nums.length - count;
}
}