一个工作指针负责遍历,一个数组指针负责赋值。
一边遍历一边把不是0的值复制保留,
遍历完后非零值已按原序保存,
就只需把剩下的空全部赋值为0即可。
int* moveZeroes(int* nums, int numsLen, int* returnSize ) {
int i = 0, j = 0, n = numsLen;
while(j < n){
if(nums[j] != 0)
nums[i++] = nums[j++];
else
j++;
}
for(; i<n; i++)
nums[i] = 0;
*returnSize = n;
return nums;
}

京公网安备 11010502036488号