Given an array and a value, remove all instances of that value in-place and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
Example:
Given nums = [3,2,2,3], val = 3,
Your function should return length = 2, with the first two elements of nums being 2.
int removeElement(int* nums, int numsSize, int val)
{
int i = 0;
int j = 0;
for(i = 0;i < numsSize ;i++)
{
if(val == nums[i])
{
continue;
}
nums[j++] = nums[i];
}
return j;
}
经验与教训
在第一题中我们学习了break在for循环中的用法,这里我们看到了continue,continue的作用是跳过执行循环中的某些次数。比如在nums[i]的值为val时,不去执行后面的赋值动作,执行后的结果是将非valu元素提前,相对顺序不变。