Given an array and a value, remove all instances of that value in-place and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
The order of elements can be changed. It doesn’t matter what you leave beyond the new length.
Example:
Given nums = [3,2,2,3], val = 3,
Your function should return length = 2, with the first two elements of nums being 2.
一个数组,要除掉所有值为val的元素之后,返回新数组的长度。
和Move Zeros很像,解题方式相同。也是用两个指针,指针i遍历数组,指针j指向值为val的元素。当nums[i] 不为val时,将nums[i]的值赋给nums[j]
只要将所有合格的元素移动到前端,算出数组长度就行了
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];
return j;
}
}