1.题目
2.题意
原地移除所有数值等于 val 的元素,返回移除后数组的新长度和新数组
3.我的解法
int removeElement(int* nums, int numsSize, int val) { int i; int len=0; for (i=0;i<numsSize;i++){ if(nums[i]!=val){ len++; nums[len-1]=nums[i]; } } return len; }
优于94%
4.优秀解法
int removeElement(int* nums, int numsSize, int val) { int i = 0; int n = numsSize; while (i < n) { if (nums[i] == val) { nums[i] = nums[n - 1]; // reduce array size by one n--; } else { i++; } } return n; }
由于不考虑返回数组的顺序,所以这个解法速度更快