Question
Analysis
给定一个数组,移除其中的指定值value,并返回移除掉指定值后新数组的长度。
Answers
- Two pointers 
 通过构造两个指针i、j,当nums[j]!=val时,将nums[j]赋给nums[i];当nums[j]=val时,直接跳过这个值。- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10- public 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;
 }
- Two Pointers - when elements to remove are rare 
 当i的值小于n时,如果nums[i]=val,则将nums[n-1]也就是数组的最后一个值赋给nums[¡],之后n–,将数组最后一位去掉,等同于去掉与val相等的那个值,之后进行的迭代会将原数组的最后一位与val进行比较,循环下去;如果nums[i]!=val,则i++,将比较位后移一位,一直比较到数组的最后一位,最终输出n即可。- public int removeElement(int[] nums;int val){ int i=0; int n=nums.length; while (i<n){ if(nums[i]=val){ nums[i]=nums[n-1]; n--; } else{ i++; } } return n; }

