/**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var moveZeroes = function(nums) {
let temp = 0;//统计前面0的个数
for (let i = 0; i < nums.length; i++) {
if (nums[i] == 0) {//如果当前数字是0就不操作
temp++;
} else if (temp != 0) {
//否则,把当前数字放到最前面那个0的位置,然后再把
//当前位置设为0
nums[i - temp] = nums[i];
nums[i] = 0;
}
}
return nums;
};
1、 这里可以参照双指针的思路解决,指针temp是一直往后移动的,如果指向的值不等于0才对他进行操作。
2、而temp统计的是前面0的个数,我们可以把i-temp看做另一个指针,它是指向前面第一个0的位置,
3、然后我们让i指向的值和i-temp指向的值交换。