
标准双指针
-
慢指针 l:标记「下一个非 0 数字应该放的位置」
-
快指针 i:遍历整个数组,寻找非 0 元素
-
遇到非 0:交换
nums[l]和nums[i],然后l++ -
遇到 0:什么都不做,i 继续往前走
class Solution {
public void moveZeroes(int[] nums) {
int l = -1;
int r = 0;
for(int i = 0; i < nums.length; i++) {
if(nums[i] != 0){
int t = nums[r];
nums[r] = nums[++l];
nums[l] = t;
r++;
}
r++;
}
}
}
这里的 r 其实完全可以用 i 代替 写 r 是为了方便理解

字丑 凑合看