#移动零

🔗 LeetCode

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0, 1, 0, 3, 12]
输出: [1, 3, 12, 0, 0]

示例 2:

输入: nums = [0]
输出: [0]

提示

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

进阶

你能尽量减少完成的操作次数吗?

#解题思路

题目信息:原地

#思路一

遍历一遍的同时,双指针将数据向前移动覆盖 0,最后填充 0,左指针指向应该填充的下标,右指针遍历

#首次代码

/**
 Do not return anything, modify nums in-place instead.
 */
function moveZeroes(nums: number[]): void {
  for (let i = 0, j = 0; j <= nums.length; ) {
    if (j === nums.length) {
      while (i < nums.length) {
        nums[i] = 0
        i++
        continue
      }
      break
    }

    if (nums[j] === 0) {
      j++
    } else {
      nums[i] = nums[j]
      i++
      j++
    }
  }
}