leetcode 删除元素的题,讨论区中看到了一个非常巧妙的算法,如下:
int removeElement(int* nums, int numsSize, int val) {
int i, j;
//j在后面定位,表示数组中第一个与所查元素不同的位置,
//如果找到所查元素就将值替换过去,j往前移一位,根据j的值返回数组的长度
//非常精妙
for(i = j = numsSize - 1; i >= 0; i--)
if(nums[i] == val && i != j--)
nums[i] = nums[j+1] ;
return j+1;
}