【Leetcode】283.移动零

59 阅读1分钟

leetcode-283.png

题目简述:数组中的非 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
  }
};