题目简述:数组中的非 0 元素挪到前面,0 挪动到后面,需要保持之前到非 0 元素的相对位置不变,且只能在原数组上操作。
这里的思路和27题一样,只需要将后面的元素填充 0 即可
var moveZeroes = function (nums) {
// 挪动前面非零元素,后面用 0 填充
let slow = 0, fast = 0
while (fast < nums.length) {
// 不等于 0 则赋值给 slow 指向的元素,slow 一个一个移动
if (nums[fast] !== 0) {
nums[slow++] = nums[fast++]
} else {
// 等于 0 则寻找下一个元素
fast++
}
}
// 给末尾填充 0
while (slow < nums.length) {
nums[slow++] = 0
}
};