移动零

移动零 (opens new window)

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

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

要求在不使用新数组的情况下将所有零移动到末尾。可以使用双指针,当快指针遍历到非零的数的时候,交换快指针和慢指针所指的数。这样,当快指针遍历完数组之后,所有的非零数都被移动到了数组的前面;则对应的,所有的零都被移动到了数组的最后面。由于快指针是顺序遍历数组的,所以非零元素的顺序也不变。

var moveZeroes = function(nums) {
    let left = 0
    for (let right = 0; right < nums.length; right++) {
        if (nums[right] !== 0) {
            [nums[left], nums[right]] = [nums[right], nums[left]]
            left++
        }
    }
    return nums
};
上次更新:: 2024/1/16 11:26:08