双指针写法
var moveZeroes = function (nums) {
let slow = 0;
for (let i = 0; i < nums.length;i++) {
if (nums[slow] != nums[i]) {
let temp = -1
temp = nums[slow]
nums[slow] = nums[i]
nums[i] = temp
slow++;
} else {
if(nums[slow] != 0){
slow++
}
}
};
}
本题要将0向后移动,快慢指针需要考虑以下情况,
快指针是无需“停下来的”,以下只考虑慢指针的值
两个指针指向数组值相同时,但慢指针不指向0,此时慢指针需要向前进1
两个指针指向数组值相同时,但慢指针指向0,此时慢指针不需要发生改变
两个指针指向数组值不同时,快慢指针值进行交换,慢指针向前进1