美文网首页
Remove Element

Remove Element

作者: Hf1dw | 来源:发表于2018-03-16 11:46 被阅读0次

Question

Analysis

给定一个数组,移除其中的指定值value,并返回移除掉指定值后新数组的长度。

Answers

  • Two pointers
    通过构造两个指针i、j,当nums[j]!=val时,将nums[j]赋给nums[i];当nums[j]=val时,直接跳过这个值。
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;
}

相关文章

网友评论

      本文标题:Remove Element

      本文链接:https://www.haomeiwen.com/subject/ythlqftx.html