[力扣_27] 移除元素

题目入口:点击进入

相关算法:

  • 原地算法——时间复杂度O(n),空间复杂度O(1)

算法和思路:

这题和上一题其实思路一样,原地算法免不了双指针,只是条件不同罢了,这题给定在数组中移除一给定的数

如果元素不等于给定的数,则慢指针等于快指针所指的元素并且前移,如果元素等同于给定的元素,则快指针移动,慢指针不动

图示如下:

img

代码如下所示:

int removeElement(int* nums, int numsSize, int val){
   if(!numsSize) return 0;
   int i=0,j=0;
   while(j<numsSize)
   {
     if(nums[j]==val)j++;
     else{
         nums[i]=nums[j];
         i++;j++;
     }
   }
   return i;
}

本文链接:

https://nullcode.fun/74.html
1 + 8 =
快来做第一个评论的人吧~