以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
168. 移动0到最后

一种解法如下:

function moveZeros(nums) {
  let i = 0;
  for (let j = 0; j < nums.length; j++) {
    if (nums[j] !== 0) {
      nums[i] = nums[j];
      i++;
    }
  }
  for (let k = i; k < nums.length; k++) {
    nums[k] = 0;
  }
}

时间复杂度为O(n),空间复杂度为O(1)。算法使用了双指针,不借助额外的数组空间,遍历一遍数组,依次将非0元素放到数组前面,并用i记录放置位置;第二次遍历数组,将i到数组结尾的元素都赋值为0就可以了。