

0 移到末尾,同时保持非零元素的相对顺序,适合用「扫描指针 + 写入指针」来处理。fast 从左到右扫描数组;遇到非零元素时,把它写到 slow 指向的位置,然后 slow 后移。扫描结束后,slow 左边就是稳定收集好的非零区,再把 slow 之后的位置补成 0。function moveZeroes(nums) {
let slow = 0;
for (let fast = 0; fast < nums.length; fast++) {
if (nums[fast] !== 0) {
nums[slow] = nums[fast];
slow++;
}
}
for (; slow < nums.length; slow++) {
nums[slow] = 0;
}
}O(n),额外空间复杂度是 O(1)。This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.