按照题目,很快写出来这样的代码:
var moveZeroes = function(nums) {
const len = nums.length;
for (let i = len - 1; i >= 0; i--) {
if (nums[i] === 0) {
for (let j = i; j + 1 < len; j++) {
[nums[j], nums[j + 1]] = [nums[j + 1], nums[j]];
}
}
}
};
可是我去…一看这速度
参考官方题解用双指针:
/**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var moveZeroes = function(nums) {
const len = nums.length;
let slow = 0;
for (let i = 0; i < len; i++) {
if (nums[i] !== 0) {
[nums[slow], nums[i]] = [nums[i], nums[slow]];
slow++;
}
}
};