voidmoveZeroes(int* nums, int numsSize){ int target=0; int slow=0; int fast; for(fast=0;fast<numsSize;fast++){ if(nums[fast]!=target){ nums[slow]=nums[fast]; slow++; } } int i; for(i=slow;i<numsSize;i++){ nums[i]=target; } return i; }
intremoveElement(int* nums, int numsSize, int val){ int slow=0; for( int fast=0;fast<numsSize;fast++){ if(nums[fast]!=val){ nums[slow]=nums[fast]; slow++; } } return slow; }
反而比暴力慢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
intremoveElement(int* nums, int numsSize, int val){ int j=0; int nums2[100]; int i; for( i =0;i<numsSize;i++){ if (nums[i]==val){ for(int j = i + 1;j < numsSize;j++){ nums[j-1]=nums[j]; } numsSize--; i--; } } return numsSize; }
intremoveElement(vector<int>& nums, int detarget) { int size = 0; for(auto x : nums) //遍历全部元素 if(x != detarget) nums[size++] = x;//如果不是要删除的目标元素,把它前移覆盖到前半部分 return size; //这里的size即为删除后的容量大小 }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
//暴力 intremoveElement(int* nums, int numsSize, int val){ int j=0; int nums2[100]; int i; for( i =0;i<numsSize;i++){ if (nums[i]==val){ for(int j = i + 1;j < numsSize;j++){ nums[j-1]=nums[j]; } numsSize--; i--; } } return numsSize; }