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