思路:数组元素删除操作较麻烦,这里采用的是交换元素法,利用两个指针分别指数组的开头下标和尾部下标,把要删除的元素放在数组的最后,最后返回前面指针的下标。
Java代码:
public int removeElement(int[] nums, int val) { int l = 0, r = nums.length - 1; while (l <= r) { if (nums[l] == val) { if (nums[r] != val) { int tmp = nums[l]; nums[l] = nums[r]; nums[r] = tmp; } else { --r; } } else { ++l; } } return l; }
或者
public int removeElement(int[] nums, int val) { int startPosition = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] != val) { nums[startPosition] = nums[i]; startPosition++; } } return startPosition; }