原地移除数组中的所有元素Val,要求时间复杂度O(n),空间复杂度为O(1)

分析可以遍历数组的同时,如果发现目标元素忽略,不是目标元素直接将该元素下标置0,依次达到覆盖所有目标元素的目的。

#include <stdio.h>
int removeElement(int* nums,int numsSize,int val)
{
    int i;
    int n=0;
    
    for(i=0;i<numsSize;i++)
    {
        if(nums[i]!=val)
        {
            nums[n]=nums[i];//置新下标
            n++;
        }
    }
    return n;
}
int main()
{
    int arr[]={1,2,3,4,4,4,5,6,7,8};
    int ret;
    int i;
    ret=removeElement(arr,10,4);
    printf("%d\n",ret);
    for(i=0;i<ret;i++)
    {
        printf("%d ",arr[i]);
    }
    return 0;
}

 

posted @ 2021-05-14 15:28  偶遇的  阅读(147)  评论(0)    收藏  举报