为了实现将所有0移动到给定数组末尾的函数,维持其他元素的顺序。
提示:如果输入数组为空,那么也应该返回一个空数组。
Example 1:
Input:[1,0,1,2,0,1,3]
Output:
[1,1,2,1,3,0,0]
Example 2
:
Input:
[]
Output:
[]
下面是代码实现,仅供大家参考,大家有更好的方法可以一起讨论。
if(nums == null || nums.length == 0) {
return nums;
}
if(nums.length == 1) {
return nums;
}
int j;
int len = nums.length - 1;//记录每个0需要移动到的位置,初始为数组的最后一位
for(int i = nums.length - 1; i >= 0; i --) {
if(nums[i] == 0) {
for(j = i; j < len; j ++) {
nums[j] = nums[j+ 1];
}
//此时找到0插入 的位置j
nums[j] = 0;
len --;
}
}
return nums;