Given an array and a value, remove all instances of that value in place and return the new length.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
很简单的题目,不过开始做错了。
这是第一遍做法:
public class Solution {
public int removeElement(int[] nums, int val) {
int len=nums.length;
for(int i=0;i<nums.length;i++){
if(nums[i]==val)len--;
}
return len;
}
}
错误的原因在于It doesn't matter what you leave beyond the new length是对新数组的前new length个数的排序有要求
修改如下:
public class Solution {
public int removeElement( int [] nums, int val) {
if (nums==null||nums.length == 0) return 0;
int len = 0;
for (int i =0; i < nums.length;i++){
if(nums[i] != val){
nums[len]=nums[i];
len++;
}
}
return len;
}
}