一个工作指针负责遍历,一个数组指针负责赋值。
一边遍历一边把不是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;
}