以下为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就可以了。