[力扣_27] 移除元素
题目入口:点击进入
相关算法:
- 原地算法——时间复杂度O(n),空间复杂度O(1)
算法和思路:
这题和上一题其实思路一样,原地算法免不了双指针,只是条件不同罢了,这题给定在数组中移除一给定的数
如果元素不等于给定的数,则慢指针等于快指针所指的元素并且前移,如果元素等同于给定的元素,则快指针移动,慢指针不动
图示如下:
代码如下所示:
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;
}