原地移除数组中的所有元素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; }
浙公网安备 33010602011771号