要求
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作
代码
这里主要使用到了两个指针i和j,然后遍历的思想,当判断第一个数不为0时,指针i和j就会往后移动一位,然后判断第二个数,如果第二个数不为0继续后移,如果第二个数为0,则j不后移指想这个为0的数,然后i后移,如果i所指向的数不为0,则i和j所指的数交换位置,如果为0,则继续后移,以此类推,依次遍历。
class Solution {
public void moveZeroes(int[] nums) {
int length;
if (nums == null || (length = nums.length) == 0) {
return;
}
int j = 0;
for (int i = 0; i < length; i++) {
if (nums[i] != 0) {
if (i > j) {
nums[j] = nums[i];
nums[i] = 0;
}
j++;
}
}
}
}```