使用一个 index 记录非 0 的数要排在第几个,每次设置非 0 的元素都令 index++。遍历完数组以后,将剩余的位置全部设为 0 即可。
解答
双层遍历(冒泡)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/** * @param {number[]}nums * @return {void}Do not return anything, modify nums in-place instead. */ var moveZeroes = function (nums) { for (let i = 0; i < nums.length; i++) { if (nums[i] === 0) { let index = i + 1; while (index < nums.length && nums[index] === 0) index++; if (index < nums.length) [nums[i], nums[index]] = [nums[index], nums[i]]; } } return nums; };
一次遍历
1 2 3 4 5 6 7 8 9 10 11 12
/** * @param {number[]}nums * @return {void}Do not return anything, modify nums in-place instead. */ var moveZeroes = function (nums) { let index = 0; for (const num of nums) { if (num) nums[index++] = num; } while (index < nums.length) nums[index++] = 0; return nums; };