34 283. Move Zeroes

90 阅读1分钟

283. Move Zeroes

解题思路

  1. 插入零的起始位置是 zeroInsterIndex = 0
  2. 遍历数组如果发现不是0的项,则交换位置 [nums[i], nums[zeroInsterIndex]] = [nums[zeroInsterIndex], nums[i]],同时移动需要插入0的位置指针 zeroInsterIndex++
  3. 如果 i === zeroInsterIndex则不需要交换,仅移动需要插入0的指针 zeroInsterIndex++

代码

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function (nums) {
    let n = nums.length
    if (n === 1) return nums
    let zeroInsterIndex = 0
    for (let i = 0; i < n; i++) {
        if(nums[i] !== 0) { 
            if(i !== zeroInsterIndex) {
                [nums[i], nums[zeroInsterIndex]] = [nums[zeroInsterIndex], nums[i]]
            }
            zeroInsterIndex++
        }
    }
};